사용자 지정 엔터티 (UserClient, UserCollaborator ..)와 함께 FOSUserBundle을 사용하고 있습니다. 아이디어는 FOSUserBundle 사용자와 각 엔티티의 OneToOne 관계를 갖는 것입니다. 내 사용자 정의 사용자 엔티티는 분리 된 번들에 있습니다.Symfony/Doctrine. 사용자 지정 사용자 엔터티가있는 FOSUserBundle
namespace Acme\Project\ProjectUserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Acme\Project\UserBundle\Entity\User;
class UserCollaborator
{
/**
* @var User
*
* @ORM\OneToOne(targetEntity="Acme\Project\UserBundle\Entity\User")
*/
protected $user;
}
그러나의 : 사용자와 OneToOne (단방향)의 관계가 (다른 번들에)
namespace Acme\Project\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
그리고 UserCollaborator :
나는 FOSUserBundle을 무시 UserBundle의 사용자 엔티티가 내 UserCollaboratorController findAll()로 나열하려고하면 User의 ID 만 가져오고 FOSUserBundle의 User 엔티티의 다른 속성은 모두 null입니다. 내 Acme \ Project \ UserBundle \ Entity \ User에서 부모 속성을 호출하는 getters를 구현하려고했지만 작동하지 않습니다 (속성이 보호되므로 getter가 필요하지 않아야 함). 자동 매핑은 true로 설정됩니다.
가 나는 게으른 로딩과 관련이 뭔가 생각하지만, 나는 그것을 처리하는 방법을 모른다 (예를 들어, $ userCollaborator-> 사용자 -> 가령 getMail() 내 컨트롤러에서 작동하지 않습니다)
정확한 findAll()에 대한 결과 :
array (size=1)
0 =>
protected 'id' => int 1
private 'name' => string 'Testing' (length=18)
private 'phone' => string '9999999992' (length=10)
protected 'user' =>
public '__isInitialized__' => boolean false
protected 'id' => int 7
protected 'username' => null
protected 'usernameCanonical' => null
protected 'email' => null
protected 'emailCanonical' => null
protected 'enabled' => null
protected 'salt' => null
protected 'password' => null
... everything null
누구나 이미이 문제에 직면 해 있습니까?
죄송합니다. $ userCollaborator-> getUser()를 시도 할 때 속성을 공개하거나 비공개로 유지하거나 getters를 사용하여 보호 한 질문에 대해 언급하는 것을 잊어 버렸습니다. $ userCollaborator-> getUser(), 수신 : " 오류 : getter 메서드에서 내 엔터티를 가리키는 UserCollaborator의 빈 속성에 액세스 할 수 없습니다. public function getUser() { return $ this -> $ user; } – gritt
그 것이 오타입니까, 아니면 실제로'$ this -> $ user'입니까? – qooplmao
우, 실제로 $! 나는 그것을 믿을 수 없다 .. 처음에 "$"를 고쳤을 때 $ userCollaborator-> getUser()를 사용하여 여전히 null 속성이 있지만 지금은 doctrine의 지연로드가 적용된다. 그래서, $ userCollaborator-> getUser() -> getEmail()을 사용하면 필요할 때 바로 예상 한 것을 반환합니다! 정말 고맙습니다! – gritt