完整性约束违规:1048 DOCTRINE

时间:2012-10-06 22:30:02

标签: php doctrine doctrine-orm

我正在进行从订单到产品的ManyToMany单向关系,一个订单可以有很多产品,一个产品可以有很多订单。

请参阅我的代码:

/**
 * @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;

我没有在google中找到如何在inverseJoinColumns中使用多个@JoinColumns所以我只是复制了第一个并用逗号分隔。

问题是,当我用这段代码运行项目时:

$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'不能为空

但价格是定义的,我在产品对象中做了一个print_r,就在那里。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我已经得到了解决方案,只是打开了Doctrine FAQ,它就是:)

查找: http://docs.doctrine-project.org/en/latest/tutorials/composite-primary-keys.html

我需要创建另一个名为OrderProducts的Entitie,其中包含具有复合主键关系的所有订单产品。

知道了!感谢。