独特的约束 - Symfony2和Doctrine2

时间:2013-04-24 10:12:53

标签: symfony doctrine unique-constraint

我无法找到以我能理解的方式编写的文档,所以我向你寻求帮助。此问题与Unique entity - Symfony2

有关

我有一个名为类别的表格,其中包含三个字段 - ID fos_user_id 名称。 另一个表名为 fos_user ,并且包含字段ID,用户名等。

我希望类别对用户来说是唯一的。一个用户不能拥有名为“Food”的两个ctegories,但所有用户都可以拥有名为“Food”的类别。

在另一个问题中,我被建议尝试这样的事情:

* @ORM\Table(name="categories",
*            uniqueConstraints={@ORM\UniqueConstraint(name="name_user_id__idx", 
*                                                     columns={"name", "user_id"})})

我试过这个:

/**
 * @ORM\Entity
 * 
 * @ORM\Table(name="category", 
 *              uniqueConstraints={@ORM\UniqueConstraint(name="name_user_idx",                                                     
                                           columns={"name", "fos_user_id"})}))
 * @ORM\Entity(repositoryClass="Acme\BudgetTrackerBundle\Entity\CategoryRepository")
 * @UniqueEntity(fields={"name", "fos_user_id"}, message="There already is such a category.")
 */

但是我收到了这个错误:

  

字段'fos_user_id'未由Doctrine映射,因此无法验证其唯一性。

我不太明白这个错误。我不明白有限制的部分。这是正确的语法和正确的写法吗?

非常感谢你!

PS:很抱歉打开一个新问题,如果我不应该,但我添加了很多新内容,并决定新的问题比编辑旧问题更好,并在评论中提问。

1 个答案:

答案 0 :(得分:5)

对于类别,用户等关系......你不应该对列使用唯一约束,而应该使用关系。例如:

而不是

@UniqueEntity(fields={"name", "fos_user_id"})

@UniqueEntity(fields={"name", "user"})

其中“user”是与User实体关联的映射字段的名称。