我在尝试验证数据库架构时遇到了一些问题,因为我收到了相互矛盾的错误消息:当我按照它说的那样做时,它告诉我这是错误的,反之亦然。
这是我的设置:
我有两个与此问题相关的表,一个名为order_option和order_product。它们之间没有直接映射,因为这是一个OpenCart安装,所以在那一端处理,但是当我尝试验证模式时,它失败并显示以下消息:
[Mapping] FAIL - 实体类'AppBundle \ Entity \ Oc49OrderOption' 映射无效: *引用的列名'order_id'必须是目标实体类'AppBundle \ Entity \ Oc49OrderProduct'上的主键列。
order_option表的当前实体布局:
/**
* Oc49OrderOption
*
* @ORM\Table(name="oc49_order_option")
* @ORM\Entity
*/
class Oc49OrderOption
{
/**
* @var integer
*
* @ORM\Column(name="order_id", type="integer", nullable=false)
*/
private $orderId;
/**
* @var integer
*
* @ORM\Column(name="order_product_id", type="integer", nullable=false)
*/
private $orderProductId;
/**
* @var integer
*
* @ORM\Column(name="product_option_id", type="integer", nullable=false)
*/
private $productOptionId;
etc ...
如果我改变它,它的内容如下:
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $orderId
当我再次运行验证检查时,我收到以下消息:
[Doctrine \ ORM \ Mapping \ MappingException]不允许使用单个ID 实体AppBundle \ Entity \ Oc49OrderOption
中的复合主键
所以几乎就像我试图纠正第一个错误一样,它告诉我这是不允许的 - 有点像捕获22!
有什么想法吗?这是架构的唯一问题,因为我到目前为止已设法解决所有其他冲突。
提前致谢。
答案 0 :(得分:0)
试试这样:
/**
* @ORM\Column(type="integer")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*
*/
private $orderId;