唯一约束-Symfony2和Doctrine2

唯一约束-Symfony2和Doctrine2,symfony,doctrine,unique-constraint,Symfony,Doctrine,Unique Constraint,我找不到以我能理解的方式编写的文档,所以我请求您的帮助。这个问题与 我有一个名为category的表,表中有三个字段-id、fos\u user\u id和name。 另一个表称为fos\u user,包含字段id、用户名等 我希望类别对用户来说是唯一的。一个用户不能有两个名为“Food”的ctegories,但所有用户都可以有一个名为“Food”的类别 在另一个问题中,有人建议我尝试这样的方法: * @ORM\Table(name="categories", * uniq

我找不到以我能理解的方式编写的文档,所以我请求您的帮助。这个问题与

我有一个名为category的表,表中有三个字段-idfos\u user\u idname。 另一个表称为fos\u 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”字段未按条令映射,因此无法验证其唯一性

我不能完全理解这个错误。我不理解有约束的部分。这是正确的语法和正确的编写方法吗

提前非常感谢


PS:如果我不应该的话,很抱歉我提出了一个新问题,但是我添加了很多新的东西,并且认为一个新的问题比编辑旧的问题并在评论中提问要好。

对于类别、用户等关系。。。不应在列上使用唯一约束,而应在关系上使用唯一约束。例如:

而不是

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


其中“user”是与用户实体相关的映射字段的名称。

对于类别、用户等关系。。。不应在列上使用唯一约束,而应在关系上使用唯一约束。例如:

而不是

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


其中“user”是与用户实体相关的映射字段的名称。

我更改了您所说的内容,但它仍然不允许两个用户拥有相同名称的类别。我删除了它,现在我所拥有的是
@uniquentity(fields={“name”,“user”})
,但是现在它不允许不同的用户拥有相同名称的类别。你能检查一下你没有-any-other@Unique。。。。还有什么地方吗?或者在父类中(如果有)。如果没有,请尝试以下操作:@uniquentity(fields={“id”、“name”、“user”}),尽管我不确定这是否有效。
@uniquentity(fields={“name”、“user”})
在编辑现有项时有效,但在添加新项时不会验证。写一个方法来计算这个名字的用户有多少个类别,并根据它的答案进行验证,这不是很糟糕吧?手动操作并不是坏事,我只是惊讶于它在默认情况下不起作用。哦,好吧。。。没有什么是完美的,甚至Symfony:)我改变了你说的,但它仍然不允许两个用户拥有一个同名的类别。我删除了它,现在我只有
@uniquentity(fields={“name”,“user”})
,但是现在它不允许不同的用户拥有相同名称的类别。你能检查一下你没有-any-other@Unique。。。。还有什么地方吗?或者在父类中(如果有)。如果没有,请尝试以下操作:@uniquentity(fields={“id”、“name”、“user”}),尽管我不确定这是否有效。
@uniquentity(fields={“name”、“user”})
在编辑现有项时有效,但在添加新项时不会验证。写一个方法来计算这个名字的用户有多少个类别,并根据它的答案进行验证,这不是很糟糕吧?手动操作并不是坏事,我只是惊讶于它在默认情况下不起作用。哦,好吧。。。没有什么是完美的,即使是Symfony:)