我无法找到以我能理解的方式编写的文档,所以我向你寻求帮助。此问题与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:很抱歉打开一个新问题,如果我不应该,但我添加了很多新内容,并决定新的问题比编辑旧问题更好,并在评论中提问。
答案 0 :(得分:5)
对于类别,用户等关系......你不应该对列使用唯一约束,而应该使用关系。例如:
而不是
@UniqueEntity(fields={"name", "fos_user_id"})
试
@UniqueEntity(fields={"name", "user"})
其中“user”是与User实体关联的映射字段的名称。