관계형 데이터베이스 모델인 다대다 관계는 한 테이블의 여러 행이 다른 테이블의 여러 행과 연결될 수 있는 시나리오를 나타냅니다. 그러나 이 관계에 추가적인 값이 도입되면 새로운 개체로 변환됩니다. 이 엔터티는 식별자(연결된 엔터티에 대한 두 관계)와 추가 데이터를 보유합니다.
다대다 관계를 효과적으로 모델링하려면 교리 2에 추가 값이 있는 관계가 많은 경우 관계를 나타내는 별도의 테이블을 만드는 것을 고려해 보십시오. 일반적으로 "링크 테이블"이라고 하는 이 테이블에는 두 상위 테이블과의 관계를 설정하는 데 필요한 열과 관계와 관련된 추가 속성이 포함됩니다.
교리 2의 맥락에서 이 링크 테이블을 새 엔터티로 매핑할 수 있습니다. 제품 및 매장과 관련된 예시 시나리오를 살펴보겠습니다.
제품 개체:
<code class="php">namespace Entity; use Doctrine\ORM\Mapping as ORM; /** @ORM\Table(name="product") @ORM\Entity() */ class Product { /** @ORM\Id() @ORM\Column(type="integer") */ protected $id; /** ORM\Column(name="product_name", type="string", length=50, nullable=false) */ protected $name; /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; }</code>
매장 개체:
<code class="php">namespace Entity; use Doctrine\ORM\Mapping as ORM; /** @ORM\Table(name="store") @ORM\Entity() */ class Store { /** @ORM\Id() @ORM\Column(type="integer") */ protected $id; /** ORM\Column(name="store_name", type="string", length=50, nullable=false) */ protected $name; /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; }</code>
재고 법인:
<code class="php">namespace Entity; use Doctrine\ORM\Mapping as ORM; /** @ORM\Table(name="stock") @ORM\Entity() */ class Stock { /** ORM\Column(type="integer") */ protected $amount; /** * @ORM\Id() * @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") * @ORM\JoinColumn(name="store_id", referencedColumnName="id", nullable=false) */ protected $store; /** * @ORM\Id() * @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) */ protected $product; }</code>
위 내용은 링크 테이블을 사용하여 교리 2의 추가 값으로 다대다 관계를 모델링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!