2017-10-07 19 views
0

私はいくつかのエンティティを持っており、ユーザーと権限の間の関係を設定しようとしています。私は権限のグループをユーザーに割り当てる可能性があるので、エンティティUser、GroupAssociationsUser、Permissionsを作成しました。私は、GroupAssociationsUserとUsers、そしてPermissionsにManyToOne関係を作成するのが最善の方法です。あなたはGroupAssociationsUserエンティティのコードを参照することができベロー:だから基本的に私が持っていると思いますsymfony 3、ManyToOneの関係

/** 
* @ORM\OneToMany(targetEntity="GroupAssociationsUser", mappedBy="group_permissions") 
*/ 
private $group_assoc_user; 

public function __construct() 
{ 
$this->group_assoc_user = new ArrayCollection(); 
} 

:権限のエンティティで最後に

/** 
* @ORM\OneToMany(targetEntity="GroupAssociationsUser", mappedBy="user_assoc") 
*/ 
private $group_assoc_user; 


public function __construct() 
{ 
    $this->group_assoc_user = new ArrayCollection(); 
} 

/** 
* @ORM\ManyToOne(targetEntity="Permissions", inversedBy="group_assoc_user") 
* @ORM\JoinColumn(name="group_permissions", referencedColumnName="id", nullable=FALSE) 
*/ 
private $group_permissions; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="group_assoc_user") 
* @ORM\JoinColumn(name="user_assoc", referencedColumnName="id", nullable=FALSE) 
*/ 
private $user_assoc; 

をそれから私はまた、Userエンティティで関係を作成します私のユーザー編集ページのリストを選択してください。ユーザーに割り当てる権限グループを選択する可能性があります。

だから私はしてフォームを作成しました:

->add('group_assoc_user', EntityType::class, array(
      'class' => 'AppBundle:Permissions', 
      'choice_label'=> 'group_name', 
      'placeholder' => 'no rights', 
     )) 

そして問題は、私はにコードを変更した場合、私は何をすべきか何の母校は、私が許可を出たりのリストだけを持っていないことである。

 ->add('group_assoc_user', EntityType::class, array(
      'class' => 'AppBundle:GroupAssociationsUser', 
      'choice_label'=> 'Permissions.group_name', 
      'placeholder' => 'no rights', 
     )); 

割り当てられていない権限が割り当てられているだけです。私は間違って何をしていますか?

私はすべての権限の名前を取得しても、doctrineに既に割り当てられたフィールドをマークするように強制できますか?

+0

は、クエリビルダを使用しようとするかもしれない - [このよう](http://symfony.com/doc/current /reference/forms/types/entity.html#using-a-custom-query-for-theentities) –

+0

こんにちはピーター、 私は何を返すべきですか? ' 'クラス'=> 'AppBundle:パーミッション' 'query_builder'=>関数(EntityRepository $小胞体){ \t \t \t \t \tリターン$ ER-> createQueryBuilder( 'U') \t \t \t \t \t - > orderBy( '​​u.id'、 'ASC'); \t \t \t \t}、 私の方法(上記のコード)を使用して、私は割り当てられたフィールド情報を得ることができますが、割り当てられていません。または、最初の例のようにすべての権限を取得できますが、選択した要素(

答えて

1

複数をtrueに設定してみます。

http://symfony.com/doc/current/reference/forms/types/entity.html#multiple

->add('group_assoc_user', EntityType::class, array(
     'class' => 'AppBundle:GroupAssociationsUser', 
     'choice_label'=> 'Permissions.group_name', 
     'placeholder' => 'no rights', 
     'multiple' => true, 
    )); 

あなたはまた、

'expanded' => true 

のようなオプション

関連する問題