独特的约束 - Symfony2和Doctrine2

Fae*_*ery 1 doctrine unique-constraint symfony

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

我有一个名为category的表,有三个字段 - id,fos_user_idname.另一个表称为fos_user,并具有字段ID,用户名等.

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

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

* @ORM\Table(name="categories",
*            uniqueConstraints={@ORM\UniqueConstraint(name="name_user_id__idx", 
*                                                     columns={"name", "user_id"})})
Run Code Online (Sandbox Code Playgroud)

我试过这个:

/**
 * @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.")
 */
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

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

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

非常感谢你提前!

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

Zel*_*jko 5

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

代替

@UniqueEntity(fields={"name", "fos_user_id"})
Run Code Online (Sandbox Code Playgroud)

尝试

@UniqueEntity(fields={"name", "user"})
Run Code Online (Sandbox Code Playgroud)

其中"user"是与User实体关联的映射字段的名称.