소개:
다 다대다 관계에는 각 관계 인스턴스에 특정한 추가 정보를 제공하는 추가 필드가 포함되는 경우가 많습니다. 그러나 Doctrine 2에서 그러한 관계를 처리하는 것은 약간 까다로울 수 있습니다. 이 문서의 목적은 이러한 관계를 효과적으로 모델링하는 방법을 명확히 하는 것입니다.
문제:
사용자가 다음과 같은 다대다 관계를 사용하여 데이터베이스 모델을 만들려고 했습니다. 재고 관리를 위한 추가 필드가 포함되었습니다. 그러나 Doctrine의 스키마 도구를 사용하여 재고 금액 값에 액세스하고 데이터베이스 테이블을 생성하려고 할 때 문제가 발생했습니다.
해결책:
다수 이해 추가 필드를 사용한 다대다 관계
다대다 관계 추가 필드는 이제 식별자(연결된 엔터티에 대한 관계)와 값을 가지므로 본질적으로 그 자체로 새로운 엔터티입니다. 따라서 값이 없는 링크 테이블로 모델링하는 것만으로는 충분하지 않습니다.
추가 필드를 사용하여 관계에 대한 별도의 엔터티 생성
권장되는 접근 방식은 별도의 엔터티를 생성하는 것입니다. (예: 이 경우 "Stock")은 관계를 나타내고 추가 필드를 포함합니다. 이 엔터티는 관련 엔터티 모두와 관계를 설정하며 각 관계는 "Stock" 엔터티의 외래 키로 표시됩니다.
코드 예:
다음은 예입니다. Doctrine 2 주석에서 개체를 정의하는 방법:
// Product Entity @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") protected $stockProducts; // Store Entity @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") protected $stockProducts; // Stock Entity @ORM\Id() @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") protected $store; @ORM\Id() @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") protected $product;
추가 고려 사항:
위 내용은 교리 2의 추가 필드를 사용하여 다대다 관계를 모델링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!