Doctrine 2 で追加フィールドを使用した多対多の関係を実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-25 07:47:11
オリジナル
988 人が閲覧しました

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

Doctrine 2 の追加フィールドを含む多対多のリンク テーブル

エンティティのセットアップ

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 サイトの他の関連記事を参照してください。

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