2

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を実行したところ、そこにありました。

何が欠けていますか?

4

1 に答える 1

1

私はこれに対する解決策を持っています.Doctrine FAQを開いたところ、そこにありました:)

見てください: http://docs.doctrine-project.org/en/latest/tutorials/composite-primary-keys.html

複合主キー関係を持つすべての注文製品を含む OrderProducts という別のエンティティを作成する必要があります。

とった!ありがとう。

于 2012-10-08T16:09:20.057 に答える