숨바꼭질에 멤버 함수 toArray()를 호출합니다.Symfony2는 : <p></p> 내가 내 <em>심포니 2</em> 프로젝트를 얻을 이상한 오류 메시지에 대한 짧은 질문을했습니다, 비 객체
나는 교리을 통해 역할을 검색하는 엔티티 클래스 User
을 보유하고 있습니다. 이것은 완벽하게 작동합니다! 하지만 ...
User implement EquatableInterface
을 보내 주었으므로 User::isEqualTo
메서드를 추가했습니다. 이것은 내 오류가 발생하는 곳입니다.
Symfony2: Call to a member function toArray() on a non-object
그러나 User::getRoles()
내부 같은 toArray
기능 사용이 프로젝트의 나머지 부분에 잘 작동 : This line, 특히 $this->getRoles()
는 오류의 원인이된다. 그래서 나는 여기서 잘못된 것을 얻지 못합니다.
누군가 나를 도와 줄 수 있습니까? 어떤 도움을 주셔서 감사합니다!
업데이트 1
로그에 상대하여 현재 도움말을 사용하여, 여기에 몇 가지 통찰력과 같습니다
$this
엔티티 사용자 클래스 반환 항상getRoles
에가, 그래서 아무것도 특별한, 그러나- 각
isEqualTo
전화 후에$this->roles
은null
을 반환하며, 이후는 그렇지 않습니다. 여기에 2
업데이트 내 더 통찰력이다 : 나는 Konstantin의 is_null
검사를 추가했습니다
- 하지만 실제 문제가 해결되지 않습니다.
- 로그인하는 동안 로그에서 볼 수 있듯이
refreshUser
이 호출되며 모든 것이 완벽합니다. 역할이 있습니다. refreshUserisEqualTo
이 실행 된 후 갑자기$this->roles
이 null이되고get_class($this->roles)
은Doctrine\\ORM\\PersistentCollection
과 비교하여 사용자 엔터티 클래스 (?!?!?)를 반환합니다.
사용자의 (직렬화되지 않은) 메서드에 역할을 추가하면이 isEqualTo
메서드 내에서 모든 것이 잘된 것처럼 보입니다. 그는 마침내 역할을 잡아 내 논리에 추가 할 수 있습니다. 벌금! 하지만 나중에 Symfony는 this 또는 that과 같은 오류를 던지고 있습니다. 내 pov에서 그것은 일련 화와 관련이있다.
일부 읽기 후에는 표준 엔티티 인 것처럼 역할 엔티티에 일련 번호를 추가했습니다. 사용자 클래스 내에서 역할을 직렬화하지 않고 사용자와 역할을 독자적으로 직렬화합니다. 그러나 사용자의 직렬화 메소드에서 역할을 제거하자마자 isEqualTo가 실행될 때 $this->roles
과 관련된 오래된 문제가 항상 null
입니다. 이 메서드 호출을 제외하고 모든 것이 훌륭합니다.
나는 정확하게 여기에서 잘못 가고있는 어떤 단서도 가지고 있지 않다.
아이디어가 있으십니까?
[here] (https://github.com/andi1984/calendar-app/blob/develop/src/Andi1984/CalendarBundle/Entity/User.php#L139)의'get_class ($ this)'의 결과는 무엇입니까?). – alu
항상 사용자 엔티티 클래스의 인스턴스이므로 아무 것도 특별하지 않습니다. 하지만 항상 isEqualTo가 호출 될 때 다음 $ this-> roles는 null입니다. 그 후 다른 getRoles() 호출에서는 그렇지 않습니다 ... – andi1984
[It] (http://stackoverflow.com/questions/4773976/doctrine2-constructor-not-called-when-using-em-find-how- 로드 엔티티) 도움이 될까요? – alu