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',
));
我只列出了未分配的權限。我究竟做錯了什麼?
即使我獲得了所有權限名稱,我可以如何強制學說標記已分配的字段?
嘗試使用查詢生成器 - [像這樣](http://symfony.com/doc/current /reference/forms/types/entity.html#using-a-custom-query-for-the-entities) –
嗨,彼得, 什麼我應該返回? ' '類'=> '的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},' 使用我的方法(上面的代碼),我可以得到分配的字段信息,但沒有未分配。或者就像在第一個例子中,我可以獲得所有權限,但我不知道如何選擇所選(