Symfony 3,形式上的多对一关系
Symfony 3, ManyToOne relation in form
我有几个实体,我尝试设置用户和权限之间的关系。我希望有可能为用户分配一组权限,所以我创建了实体用户、GroupAssociationsUser、权限。我认为最好的方法是在 GroupAssociationsUser 中创建与用户和权限的关系 ManyToOne。您可以在下面看到 GroupAssociationsUser 实体的代码:
/**
* @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;
然后我还在用户实体中创建了关系:
/**
* @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();
}
所以基本上我想在我的用户编辑页面上有 select 列表,我希望有可能将 select 权限组分配给用户。
所以我创建了表单:
->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 标记已分配的字段?
尝试将 Multiple 设置为 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
选项
我有几个实体,我尝试设置用户和权限之间的关系。我希望有可能为用户分配一组权限,所以我创建了实体用户、GroupAssociationsUser、权限。我认为最好的方法是在 GroupAssociationsUser 中创建与用户和权限的关系 ManyToOne。您可以在下面看到 GroupAssociationsUser 实体的代码:
/**
* @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;
然后我还在用户实体中创建了关系:
/**
* @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();
}
所以基本上我想在我的用户编辑页面上有 select 列表,我希望有可能将 select 权限组分配给用户。
所以我创建了表单:
->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 标记已分配的字段?
尝试将 Multiple 设置为 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
选项