Symfony2: вызов функции-члена toArray() для необъекта

Hy,

У меня короткий вопрос о странном сообщении об ошибке, которое я получаю в своем проекте Symfony 2.

У меня есть класс сущности User который получает свои роли через доктрину. Это работает отлично! Но...

Я хочу позволить User implement EquatableInterface так что я добавил User::isEqualTo метод. Это где моя ошибка происходит. Эта линия, особенно $this->getRoles() вызывает ошибку:

Symfony2: вызов функции-члена toArray() для необъекта

Но то же самое toArray использование функции внутри User::getRoles() отлично работает на остальной части проекта. Так что я не понимаю, что здесь не так.

Может ли кто-нибудь помочь мне с этим? Любая помощь приветствуется!

Обновление 1

Просматривая журналы и используя вашу текущую помощь, вот несколько идей:

  • $this в getRoles всегда возвращает класс пользователя сущности, так что ничего особенного там нет, но
  • После каждого isEqualTo вызов, $this->roles возвращается null после этого нет.

Обновление 2

Вот мои дальнейшие идеи:

  • Я добавил Konstantin Pereiaslov is_null проверьте, но это не решает актуальную проблему.
  • Как я мог видеть в журналах во время входа в систему, refreshUser называется и все идеально. Роли найдены. После обновления пользователя isEqualTo уволен и вдруг $this->roles становится нулевым и get_class($this->roles) возвращает класс сущности пользователя (?!?!?) по сравнению с Doctrine\\ORM\\PersistentCollection,

Когда я добавляю роли в методы сериализации пользователя (не), кажется, все в порядке isEqualTo метод. Наконец он берет роли, и я могу добавить к этому свою логику. Отлично! Но потом Symfony выдает ошибки, такие или те. В моем pov это как-то связано с сериализацией.

После некоторых чтений я добавил сериализацию к объекту роли, потому что это кажется стандартным способом. Сериализация пользователя и ролей самостоятельно, а не (не) сериализация ролей внутри пользовательского класса. Но как только я удаляю роли из методов сериализации пользователя, старая проблема снова и снова возникает $this->roles всегда null когда isEqualTo уволен. Каждый раз до и после все замечательно, кроме вызова этого метода.

Я понятия не имею, что здесь происходит.

Любая идея?

1 ответ

Скорее всего это вызвано $this->roles не заполняется в момент вызова getRoles(). Трудно сказать, что именно вызывает это, не проходя через ваш другой код. Простым решением было бы добавить чек к вашему getRoles() метод в строке 138:

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

Но я не уверен, что это то, что вы хотите сделать, вы, вероятно, хотите выяснить, почему роли на самом деле пусты в данный момент.

Другие вопросы по тегам