属性 (...) 不存在 (Symfony 3)
Property (...) does not exist (Symfony 3)
在我的 Symfony 3 项目中,"users" 和 "roles" 之间存在多对多关系。
以前是可以的,现在报错了:
Property AppBundle\Entity\Role::$user does not exist
我不知道我做了什么,可能是因为 运行 一个 "php bin/console doctrine:mapping:import --force AppBundle xml" 命令。
这是用户实体的片段 class:
/**
* @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”关系。对我来说,一切看起来都很好。
当您 运行 映射命令时,您会在 AppBundle/Resources/config/doctrine 下生成映射文件,这些文件会干扰您的注释。在 Doctrine 中,每个 bundle 只能有一种类型的实体映射。多种类型往往会无声无息地失败。
这解释了为什么 "used to work"。
删除config/doctrine目录,也许清除缓存,你应该回到原来的位置。
@Cerad,回答正确。只需清除缓存 (php bin/console cache:clear
),您就可以开始了!
在我的 Symfony 3 项目中,"users" 和 "roles" 之间存在多对多关系。
以前是可以的,现在报错了:
Property AppBundle\Entity\Role::$user does not exist
我不知道我做了什么,可能是因为 运行 一个 "php bin/console doctrine:mapping:import --force AppBundle xml" 命令。
这是用户实体的片段 class:
/**
* @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”关系。对我来说,一切看起来都很好。
当您 运行 映射命令时,您会在 AppBundle/Resources/config/doctrine 下生成映射文件,这些文件会干扰您的注释。在 Doctrine 中,每个 bundle 只能有一种类型的实体映射。多种类型往往会无声无息地失败。
这解释了为什么 "used to work"。
删除config/doctrine目录,也许清除缓存,你应该回到原来的位置。
@Cerad,回答正确。只需清除缓存 (php bin/console cache:clear
),您就可以开始了!