> 백엔드 개발 > PHP 튜토리얼 > Doctrine 2의 링크 테이블을 사용하여 추가 필드가 있는 다대다 관계를 처리하는 방법은 무엇입니까?

Doctrine 2의 링크 테이블을 사용하여 추가 필드가 있는 다대다 관계를 처리하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-25 01:53:02
원래의
238명이 탐색했습니다.

How to Handle Many-to-Many Relationships with Extra Fields Using Doctrine 2's Link Table?

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

이 문제는 링크 테이블 내에 추가 필드가 필요한 다대다 관계. 특히 재고 관리 테이블이 필요합니다.

이 문제를 해결하려면 이러한 연관이 엄밀히 말하면 다대다 관계가 아니라 새로운 엔터티라는 점을 이해하는 것이 중요합니다. 식별자(연결된 엔터티에 대한 관계) 및 추가 값.

데이터베이스 모델은 다음과 같이 재구성되어야 합니다.

제품:

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;
}
로그인 후 복사

매장:

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;
}
로그인 후 복사

재고:

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;
}
로그인 후 복사

위 내용은 Doctrine 2의 링크 테이블을 사용하여 추가 필드가 있는 다대다 관계를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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