> 데이터 베이스 > MySQL 튜토리얼 > 교리 2의 추가 필드를 사용하여 다대다 관계를 구현하는 방법은 무엇입니까?

교리 2의 추가 필드를 사용하여 다대다 관계를 구현하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-30 07:57:12
원래의
367명이 탐색했습니다.

How to Implement a Many-to-Many Relationship with an Extra Field in Doctrine 2?

교리 2의 추가 필드가 있는 다대다 링크 테이블

소개
데이터베이스 모델링 종종 다대다 관계 생성이 포함됩니다. 각 관계에 대해 추가 정보를 저장해야 하는 경우 기존의 다대다 테이블로는 충분하지 않습니다. 이 기사에서는 추가 필드가 링크 테이블에 추가되는 Doctrine 2를 사용하여 이러한 관계를 생성하는 방법을 살펴봅니다.

과제
처음에는 다음과 같은 다대다 관계를 생성하려고 시도합니다. 추가 필드로 인해 원하는 값이 없는 링크 테이블이 생성되었습니다. "제품" 및 "매장" 항목과의 관계가 있는 별도의 "재고" 테이블을 포함하도록 데이터베이스 레이아웃을 재구성하려는 후속 시도도 성공하지 못했습니다.

해결책
해결의 핵심 이 문제는 추가 값과의 다대다 연관이 고유한 엔터티가 된다는 점을 이해하는 데 있습니다. 이 예의 맥락에서 "amount" 필드가 있는 "Stock" 테이블은 더 이상 순수한 다대다 관계가 아닌 별도의 엔터티를 나타냅니다.

엔티티 모델
이러한 이해를 바탕으로 다음 엔터티 모델은 다음과 같습니다. 제안:

  • 제품:

    • 이름 및 재고를 포함한 제품 정보를 보유합니다. Inventory.
  • 매장:

    • 제품과 유사하지만 매장 정보 및 재고가 표시됩니다. Inventory.
  • Stock:

    • "금액"을 포함하여 제품과 매장 간의 관계를 나타냅니다. field.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿