교리 2의 추가 필드가 있는 다대다 링크 테이블
소개
데이터베이스 모델링 종종 다대다 관계 생성이 포함됩니다. 각 관계에 대해 추가 정보를 저장해야 하는 경우 기존의 다대다 테이블로는 충분하지 않습니다. 이 기사에서는 추가 필드가 링크 테이블에 추가되는 Doctrine 2를 사용하여 이러한 관계를 생성하는 방법을 살펴봅니다.
과제
처음에는 다음과 같은 다대다 관계를 생성하려고 시도합니다. 추가 필드로 인해 원하는 값이 없는 링크 테이블이 생성되었습니다. "제품" 및 "매장" 항목과의 관계가 있는 별도의 "재고" 테이블을 포함하도록 데이터베이스 레이아웃을 재구성하려는 후속 시도도 성공하지 못했습니다.
해결책
해결의 핵심 이 문제는 추가 값과의 다대다 연관이 고유한 엔터티가 된다는 점을 이해하는 데 있습니다. 이 예의 맥락에서 "amount" 필드가 있는 "Stock" 테이블은 더 이상 순수한 다대다 관계가 아닌 별도의 엔터티를 나타냅니다.
엔티티 모델
이러한 이해를 바탕으로 다음 엔터티 모델은 다음과 같습니다. 제안:
제품:
매장:
Stock:
Doctrine 2를 사용한 매핑
항목에 해당하는 Doctrine 2 매핑은 다음과 같습니다.
// Product.php class Product { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; } // Store.php class Store { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; } // Stock.php class Stock { /** @ORM\Column(type="integer") */ protected $amount; /** @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") */ protected $store; /** @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") */ protected $product; }
이 접근 방식을 따르면 Doctrine 2를 사용하여 추가 필드와 복잡한 데이터베이스 관계를 생성하여 더 큰 유연성을 제공할 수 있습니다. 데이터 모델링.
위 내용은 교리 2의 추가 필드를 사용하여 다대다 관계를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!