Orders から Products への ManyToMany Unidirectional リレーションシップを実行しています。1 つの注文に複数の製品を含めることができ、1 つの製品に複数の注文を含めることができます。
私のコードを見てください:
/**
* @ManyToMany(targetEntity="Product")
* @JoinTable(name="dc_order_products",
* joinColumns={@JoinColumn(name="order_id", referencedColumnName="id")},
* inverseJoinColumns={
* @JoinColumn(name="product_id", referencedColumnName="id"),
* @JoinColumn(name="product_price", referencedColumnName="product_price")
* })
**/
protected $order_products;
inverseJoinColumns で複数の @JoinColumns を使用する方法をすべての Google で見つけられなかったので、最初のものをコピーしてコンマで区切っただけです。
問題は、このコードでプロジェクトを実行するときです:
$p = new \Entities\Product(get_date(), 'Product Name', 'Description', 39, 85, 0, 0, 1);
$em->persist($p);
$em->flush();
$o = new \Entities\Order($u->getUserId(), get_date(), 1, 150);
$o->addOrderProduct($p);
$em->persist($o);
$em->flush();
それは私に与えます:
整合性制約違反: 1048 列 'product_price' を null にすることはできません
しかし、価格は定義されています。製品オブジェクトでprint_rを実行したところ、そこにありました。
何が欠けていますか?