php - Symfony2 : Call to a member function toArray() on a non-object

标签 php symfony toarray

嘿,

我有一个简短的问题,关于我在 Symfony 2 项目中收到的奇怪错误消息。

我有一个实体类User,它通过Doctrine检索其角色。这非常有效!但是...

我想让User 实现 EquatableInterface,因此我添加了 User::isEqualTo 方法。这就是我的错误发生的地方。 This line ,尤其是 $this->getRoles() 导致错误:

Symfony2: Call to a member function toArray() on a non-object

但是在 User::getRoles() 中使用相同的 toArray 函数对于项目的其余部分效果很好。所以我不明白这里出了什么问题。

有人可以帮我吗?任何帮助表示赞赏!

更新1

查看日志并使用当前的帮助,以下是一些见解:

  • $this位于 getRoles 总是返回实体用户类,所以没有什么特别的,但是
  • 每次调用 isEqualTo 后,$this->roles 都会返回 null,之后就不再返回。

更新2

以下是我的进一步见解:

  • 我已添加 Konstantinis_null 检查,但并不能解决实际问题。
  • 正如我在登录期间在日志中看到的那样,调用了 refreshUser 并且一切都很完美。角色已找到。在刷新用户 isEqualTo 被触发后,突然 $this->roles 变为 null 并且 get_class($this->roles) 返回用户实体类 (? !?!?) 与 Doctrine\\ORM\\PersistentCollection 相比。

当我将角色添加到用户的(取消)序列化方法时,此 isEqualTo 方法中的一切似乎都很好。他终于捕获了角色,我可以添加我的逻辑。美好的!但之后 Symfony 会抛出类似 this 的错误或that 。在我的视角中,它与序列化有关。

经过一些阅读后,我向角色实体添加了序列化,因为这似乎是标准方法。单独序列化用户和角色,而不是序列化(取消)序列化用户类内的角色。但是,一旦我从用户的序列化方法中删除角色,老问题就会一次又一次地出现,当 isEqualTo 被触发时, $this->roles 总是 null 。每次之前和之后一切都很棒,除了这个方法调用。

我不知道这里到底出了什么问题。

有什么想法吗?

最佳答案

这很可能是由于在 getRoles() 调用时未填充 $this->roles 造成的。如果不检查其他代码,很难说出到底是什么原因造成的。一个简单的解决方案是在第 138 行的 getRoles() 方法中添加一个检查:

if ($this->roles === null) {
     return null;
}

但我不确定这就是您想要做的,您可能想弄清楚为什么角色此时实际上是空的。

关于php - Symfony2 : Call to a member function toArray() on a non-object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876715/

相关文章:

php - 通过电子邮件将评论发送到表中存储的电子邮件地址

mysql - 尝试将 sql 脚本导入现有数据库会生成错误

java - 二维 ArrayList 到普通数组 java

java - 将 Object[] 转换为 int[] 错误

php - 基于用户的网站的 mySQL 表结构

php - 如何创建一个假的/"virtual"文件?

php - 我应该同时向 MySQL 发送多个任务吗?如果是这样,如何?

file-upload - 在Symfony中上载文件时"Access denied"调用出现'rename'错误

symfony - 退出状态代码 '1' 表示出现问题 [knp snappy]

Java List toArray(T[] a) 实现