我在symfony2控制台中出现此错误:
The mappings Cpj\ProjectsBundle\Entity\Project#id_user and Cpj\UserBundle\Entity\User#projects are inconsistent with each other
这是我的用户类(我使用的是fosUserBundle:
class User extends BaseUser
{
...
/**
* @ORM\OneToMany(targetEntity="Cpj\ProjectsBundle\Entity\Project", mappedBy="user")
**/
private $projects;
}
这是我的项目类
class Project {
...
/**
* @ORM\ManyToOne(targetEntity="Cpj\UserBundle\Entity\User", inversedBy="projects")
* @ORM\JoinColumn(name="id_user", referencedColumnName="id")
**/
private $id_user;
}
我认为我正确地遵循了symfony食谱中的说明,但我无法理解错误的原因...... 感谢
答案 0 :(得分:1)
在您使用的用户实体中
mappedBy="user"
然后在Project实体中命名该属性
private $id_user;
你需要它们匹配才能工作,mappedBy注释选项引用属性名称而不是数据库字段。
这一行定义了将存储引用的数据库字段,但
可能不同 @ORM\JoinColumn(name="id_user", referencedColumnName="id")
通常我们使用mappedBy="user"
& private $user
& JoinColumn(name="id_user" [...]
在应用程序和数据库中都具有良好的可读性。保持在我的身边,我将与实体合作,$project->getUser()->getName();
比$project->getUserId()->getName();
更漂亮。另一方面,在数据库中,项目表中的id_user
字段比使用user
更有说服力。