属性(...)不存在(Symfony 3)

kon*_*irm 7 symfony symfony-2.3

在我的Symfony 3项目中,我在"用户"和"角色"之间存在ManyToMany关系.

它曾经工作,但现在我有一个错误:

Property AppBundle\Entity\Role::$user does not exist
Run Code Online (Sandbox Code Playgroud)

我不知道我做了什么,可能是因为运行了"php bin/console doctrine:mapping:import --force AppBundle xml"命令.

这是User实体类的一个片段:

/**
 * @ORM\Table(name="user")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
 */
class User implements AdvancedUserInterface, \Serializable {

    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     *
     * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Role", cascade = {"persist"})
     * @ORM\JoinTable(name="user_role")
     */
    private $roles;
Run Code Online (Sandbox Code Playgroud)

如您所见,与Role实体有关系.

另一方面,角色实体不包含任何关系信息,它应该按照本文的规定工作:

https://knpuniversity.com/screencast/symfony2-ep3/many-to-many-relationship

它曾经工作过,现在却不知道为什么.

据我所知,根据Symfony文档,这被称为"单向ManyToMany"关系.对我来说一切都很好.

Cer*_*rad 8

运行映射命令时,您在AppBundle/Resources/config/doctrine下生成了映射文件,这些文件会干扰您的注释.在Doctrine中,每个包只能有一种类型的实体映射.多种类型往往会无声地和混乱地失败.

这就解释了为什么它"习惯了".

删除config/doctrine目录,可能清除缓存,你应该回到原来的位置.