我卡住了ATM。自从我做了最新的网站开发以来已经过了几个月,现在我感觉很愚蠢。
我在Doctrine2中创建了一个名为User
的类,另一个名为Publication
的类。
Publication
类与User
有一个ManyToOne关系,因此我可以确定哪个User
创建了Publication
。
就像那样:
/**
* @ORM\ManyToOne(targetEntity="Users")
* @ORM\JoinColumn(name="user", referencedColumnName="id")
*/
private $user;
现在,我想要做的是在这两个类之间创建一个多对多(我猜)关系来执行以下操作:
points
(int)提供给任何出版物。在Mysql Schema中,我认为我最终会得到一个名为User_Voted_Publication
的第3个表,但是我不确定如何在Doctrine中这样做。
如果我只创建一个ManyToMany关系,则无法添加属性points
,该属性将保存User
给任何特定Publication
的点数。
任何提示都表示赞赏。
非常感谢,如果这个问题似乎很愚蠢,那就很抱歉。我已经觉得那样=)。
答案 0 :(得分:1)
根据我的经验(如果我错了,任何人都可以随意插入),学说中的多对多关系只允许使用主键(在您的情况下,user_id和publication_id)。如果表中有任何其他字段(User_Voted_Publication表),则doctrine将无法识别它们。我为解决这个问题所做的是创建新实体(User_Voted_Publication),然后与其他表(用户表和发布表)创建一对多关系。
这将允许您在User_Voted_Publication表中添加所需的任何其他字段。我注意到的一件事可能并不理想......我不得不在表中创建一个自动增量id字段而不是使用自然主键(user_id,publication_id),但它仍然可以正常工作。我刚刚在两个字段(user_id,publication_id)上做了一个唯一约束。