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

时间:2016-02-01 14:31:44

标签: symfony symfony-2.3

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

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

Property AppBundle\Entity\Role::$user does not exist

我不知道我做了什么,可能是因为运行了“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;

正如您所看到的,角色实体存在关联。

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

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

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

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

2 个答案:

答案 0 :(得分:8)

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

这解释了为什么它“习惯了”。

删除config / doctrine目录,也许清除缓存,你应该回到原来的位置。

答案 1 :(得分:1)

@Cerad,回答是正确的。只需清除缓存(php bin/console cache:clear)就可以了![/ p>

symfony.com/doc/current/console/usage.html