symfony doctrine不一致映射

时间:2014-07-07 10:49:22

标签: symfony doctrine

我在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食谱中的说明,但我无法理解错误的原因...... 感谢

1 个答案:

答案 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更有说服力。