ホームページ > バックエンド開発 > PHPチュートリアル > Doctrine 2 のリンク テーブルを使用して追加フィールドとの多対多の関係を処理するにはどうすればよいですか?

Doctrine 2 のリンク テーブルを使用して追加フィールドとの多対多の関係を処理するにはどうすればよいですか?

DDD
リリース: 2024-10-25 01:53:02
オリジナル
231 人が閲覧しました

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

追加フィールドを含む 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\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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート