我在symfony创建了2个实体:用户和角色在多对多的关系.这意味着每个用户可以拥有更多的角色和角色可以设置给许多用户.
用户类:
/** * @ORM\Entity * @ORM\Table(name="JEP_User") * @ORM\Entity(repositoryClass="Chrchel\JepBundle\Repository\UserRepository") */ class User implements AdvancedUserInterface { /** * @ORM\Id() * @ORM\Column(name="id",type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\Column(name="username",type="string",length=100,unique=true) */ private $username; /** * @ORM\ManyToMany(targetEntity="Role",inversedBy="users") * */ protected $roles; //.... }
角色类:
/** * @ORM\Table(name="JEP_Role") * @ORM\Entity() */ class Role implements RoleInterface { /** * @ORM\Column(name="id",type="integer") * @ORM\Id() * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** @ORM\Column(name="name",length=30) */ protected $name; /** @ORM\Column(name="role",length=20,unique=true) */ protected $role; /** @ORM\ManyToMany(targetEntity="User",mappedBy="roles") */ protected $users; //... }
我不明白如何在Symfony2中撰写查询构建器以列出所有存在的角色,并将其添加到UserForm的最后,可以选择(作为复选框)角色授予用户.
我试图在UserType中使用这样的集合
->add('roles','collection',array('label' => 'Role','required' => false,'type'=> new RoleType()))
从symfony获得的最好的行是带有选定的角色名称的文本框.但这不是我需要的.