2012-08-01 8 views
1

저는 지난 몇 시간 동안이 질문에 어려움을 겪었으므로 아무것도 찾을 수 없었습니다.FOSUserBundle 그룹 사용자 (symfony2)

나는 FOSUserBundle을 구성하고 그룹을 올바르게 활성화하고 작동하도록했습니다. 사용자 클래스에서 다음과 같이 그러나, 사용자 그룹의 관계가 정의됩니다

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\Group") 
* @ORM\JoinTable(name="fos_user_user_group", 
*  joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")} 
*) 
*/ 
protected $groups; 

및 그룹 클래스에서, 난 정의 $ 사용자 목록이 없습니다. 내 그룹 클래스에서 $ users 변수를 만들고 User 객체와의 관계를 정의하는 것과 같은 많은 "일반적인"작업을 시도했지만 FOSUserBundle을 사용하면 좋지 않습니다 (매번 관계를 만들 때 NEW 테이블이 만들어지며, 이미 제자리에있을 때). 예 :

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\Group", inversedBy="groups", cascade={"all"}) 
* 
*/ 
protected $users; 

의견이 있으십니까?

는 다시 내 주요 목표는 : 나는() 그룹 클래스에서

답변

1

, 당신의 targetEntity는 사용자가 아닌 그룹해야합니다 그룹 -> getUsers을 할 수 있어야합니다. 또한 $ groups 속성에 대한 inversedBy 규칙을 추가하고 $ users에 대해 mappedBy에 modifiers inversedBy를 추가하십시오.

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\Group", inversedBy="users") 
* @ORM\JoinTable(name="fos_user_user_group", 
*  joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")} 
*) 
*/ 
protected $groups; 

그리고

/** 
* @ORM\ManyToMany(targetEntity="Netlabs\UserBundle\Entity\User", mappedBy="groups") 
* 
*/ 
protected $users; 
+0

당신의 제안을 같이 코드를 수정하고 실행 한 후와 "교리 : 스키마를 : 업데이트 --force" "교리를 : 엔티티 : 생성", 그것은 여전히 ​​"새 테이블을 생성 group_user "를 사용하는 대신"fos_user_user_group "을 사용합니다. – JoshuaWohle

+0

ManyTo§any 관계를 사용하여 새 테이블을 만들어야합니다. 객체 간의 관계를 저장하는 유일한 방법입니다. –

+0

나는 알고있다. 그러나 FOSUserBundle은 이미 "fos_user_user_group"이라는 테이블을 생성한다. 2가 아닌 1 개의 테이블 만 있어야합니다. – JoshuaWohle

관련 문제