嗨,
我有一个关于我在Symfony 2项目中收到的奇怪错误消息的简短问题。
我有一个实体类,它通过DoctrineUser
检索其角色。这完美!但...
我想让User implement EquatableInterface
,所以我添加了User::isEqualTo
方法。这是我的错误发生的地方。这一行,尤其$this->getRoles()
是导致错误:
Symfony2:在非对象上调用成员函数 toArray()
但是内部相同的toArray
函数用法在User::getRoles()
项目的其余部分中效果很好。所以我不明白这里有什么问题。
有人可以帮我吗?任何帮助表示赞赏!
更新 1
查看日志并使用您当前的帮助,以下是一些见解:
$this
in总是返回实体用户类,所以没什么特别的,但是getRoles
- 每次
isEqualTo
调用后,$this->roles
返回null
,之后不返回。
更新 2
以下是我的进一步见解:
- 我添加了Konstantin的
is_null
支票,但它并没有解决实际问题。 - 正如我在登录期间在日志中看到的那样,
refreshUser
被调用并且一切都很完美。找到了角色。在 refreshUserisEqualTo
被触发并突然$this->roles
变为 null 并get_class($this->roles)
返回用户实体类 (?!?!?) 之后,与Doctrine\\ORM\\PersistentCollection
.
当我将角色添加到用户的(取消)序列化方法时,此方法中的一切似乎都很好isEqualTo
。他终于抓住了角色,我可以添加我的逻辑。美好的!但是之后 Symfony 会抛出这样或那样的错误。在我的 pov 中,它与序列化有关。
在阅读了一些资料后,我为角色实体添加了序列化,因为这似乎是标准的方式。自行序列化用户和角色,而不是(取消)序列化用户类中的角色。但是,一旦我从用户的序列化方法中删除角色,旧问题就会一次又一次地发生,而且$this->roles
总是null
在触发 isEqualTo 时。每次之前和之后一切都很好,除了这个方法调用。
我不知道这里到底出了什么问题。
任何想法?