我正在做一个从订单到产品的多对多单向关系,一个订单可以有多个产品,一个产品可以有多个订单。
查看我的代码:
/**
* @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,所以我只是复制了第一个并用逗号分隔。
问题是,当我使用此代码运行项目时:
$p = new EntitiesProduct(get_date(), 'Product Name', 'Description', 39, 85, 0, 0, 1);
$em->persist($p);
$em->flush();
$o = new EntitiesOrder($u->getUserId(), get_date(), 1, 150);
$o->addOrderProduct($p);
$em->persist($o);
$em->flush();
它给了我:
完整性约束冲突:1048 列"product_price"不能为空
但是价格是定义的,我在产品对象中做了一个print_r,就在那里。
我错过了什么?
我已经有了解决方案,刚刚打开了教义常见问题解答,它就:)
看:http://docs.doctrine-project.org/en/latest/tutorials/composite-primary-keys.html
我需要创建另一个名为 OrderProducts 的 Entitie,其中包含具有复合主键关系的所有订单产品。
明白了!谢谢。