在我的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”关系。对我来说一切都很好。
答案 0 :(得分:8)
运行映射命令时,您在AppBundle / Resources / config / doctrine下生成了映射文件,这些文件会干扰您的注释。在Doctrine中,每个包只能有一种类型的实体映射。多种类型往往会无声地和混乱地失败。
这解释了为什么它“习惯了”。
删除config / doctrine目录,也许清除缓存,你应该回到原来的位置。
答案 1 :(得分:1)
@Cerad,回答是正确的。只需清除缓存(php bin/console cache:clear
)就可以了![/ p>