エンティティのセットアップ
Doctrine 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\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") * @ORM\JoinColumn(name="store_id", referencedColumnName="id", nullable=false) */ protected $store; /** * @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) */ protected $product; }
この設定では 3 つのことが確立されます。エンティティ: 製品、店舗、在庫。 Stock エンティティには追加プロパティとして金額フィールドが含まれており、値との多対多の関係になります。
以上がDoctrine 2 で追加フィールドを使用した多対多の関係を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。