2017-10-07 77 views
0

我有幾個實體,我嘗試建立用戶和權限之間的關係。我想有可能將權限組分配給用戶,所以我創建了實體User,GroupAssociationsUser,Permissions。我認爲最好的方法是創建GroupAssociationsUser中的ManyToOne與用戶和權限的關係。婁你可以看到GroupAssociationsUser實體代碼:Symfony 3,ManyToOne關係的形式

/** 
* @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實體還創建關係:

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


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

最後,在許可的實體:

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

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

所以基本上我想有在我的用戶編輯頁面選擇列表,我想有可能選擇權限組分配給用戶。

因此,我創建形式:

->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', 
     )); 

我只列出了未分配的權限。我究竟做錯了什麼?

即使我獲得了所有權限名稱,我可以如何強制學說標記已分配的字段?

+0

嘗試使用查詢生成器 - [像這樣](http://symfony.com/doc/current /reference/forms/types/entity.html#using-a-custom-query-for-the-entities) –

+0

嗨,彼得, 什麼我應該返回? ' '類'=> '的appbundle:權限', 'query_builder'=>函數(EntityRepository $ ER){ \t \t \t \t \t回$ ER-> createQueryBuilder( 'U') \t \t \t \t \t - > orderBy('u.id','ASC'); \t \t \t \t},' 使用我的方法(上面的代碼),我可以得到分配的字段信息,但沒有未分配。或者就像在第一個例子中,我可以獲得所有權限,但我不知道如何選擇所選(

回答