私は次のデータモデルを持っています
Product: id, description, price
ProductExtraField: id, name
ProductExtraFieldData: product_id, extra_field_id, value
このデータモデルを使用して、アプリケーションのユーザーがその場で製品にプロパティを追加できるようにします。プロパティ「Color」を追加するとします。そうすると、次のProductExtraField
ような値で行がテーブルに作成されます:6、'Color'。これで、このプロパティの値をそこの製品に追加できます。そうすると、次のProductExtraFieldData
ような値で新しい行がテーブルに作成されます:4、6、'Green'。ここで、このモデルを。というクラスで表現したいと思いProduct
ます。私は次のコードを使用します:
<?php
use Doctrine\Common\Collections\ArrayCollection;
/** @Entity @Table(name="product") **/
class Product
public function __construct() {
$this->extraFieldData = new ArrayCollection();
$this->extraField = new ArrayCollection();
}
/** @Id @Column(name="id", type="integer") @GeneratedValue **/
private $id;
/** @Column(name="description", type="string") **/
private $description;
/** @Column(name="price", type="float") **/
private $price;
/**
* @OneToMany(targetEntity="ProductExtraFieldData", mappedBy="product", cascade={"persist"})
* @JoinColumn(name="product_id", referencedColumnName="id")
* @var extraFieldData[]
**/
protected $extraFieldData = null;
/**
* @OneToMany(targetEntity="ProductExtraField", mappedBy="??????")
* @var extraField[]
**/
protected $extraField = null;
オフコース最後の数行は正しくありません。このデータをロードする方法がわかりません。追加のフィールドの名前をすべての製品で使用できるようにしたいと思います。私は$extraField
静的であるべきだと思います。これらの値をロードするようにDoctrineを構成するにはどうすればよいですか?$extraField
クラスからの値を永続化することProduct
は必須ではありません。