1

我找不到以我可以理解的方式编写的文档,所以我向您寻求帮助。这个问题与唯一实体有关 - Symfony2

我有一个名为category的表,其中包含三个字段 - idfos_user_idname。另一个表称为fos_user并具有字段 id、username 等。

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

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

* @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:对不起,如果我不应该提出一个新问题,但我添加了很多新东西,并决定一个新问题比编辑旧问题并在评论中提问要好。

4

1 回答 1

5

For relations like Category, User etc... you should not use unique constraints on columns but on relations. For example:

instead of

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

try

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

where "user" is the name of mapped field to relation with User entity.

于 2013-04-24T15:10:49.703 回答