我被一个涉及多对多关系的Symfony2问题卡住了:我有一个用户实体和一个项目实体,与多对多关系:symfony2 - 多对多关系/表格
我的用户实体:
class User implements UserInterface
{
[...]
/**
* @ORM\ManyToMany(targetEntity="Project", inversedBy="users", cascade={"persist"})
* @ORM\JoinTable(name="user_project",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="project_id", referencedColumnName="id")}
*)
*
* @var ArrayCollection $projects
*/
protected $projects;
我的项目实体:
class Project
{
[...]
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="projects")
*/
protected $users;
Symfony2中创建的 “链接” 表(称为user_project),然后我插入一些行。例如,我有2个用户(id = 1/id = 2)和2个项目(id = 1/id = 2)。
以我表user_project我插入下面的行:
- 1(USER_ID) - 1(PROJECT_ID)
- 1(USER_ID) - 2-(PROJECT_ID)
- 2(USER_ID) - 1 (project_id)
因此,用户1分配给项目1和2,而用户2仅分配到项目1。
我的问题是,我不知道如何为指定的用户选择项目。例如,我想显示(在我的表单中)一个选择框,并将项目分配给我的用户。 (对于用户2,我只希望有项目1.在我的选择框)
我的形式:
$builder->add('project', 'entity', array(
'class' => 'WebaccessBugtrackerBundle:Project',
'property' => 'name',
'query_builder' => function($er) use ($userManager) {
$qb = $er->createQueryBuilder('project')
->orderBy('project.name', 'ASC');
$qb-> ????
}
return $qb;
},
'property' => 'name'));
我希望你明白我在说什么,你能帮助我:)
谢谢!
显示整个窗体类型和操作 – nikita2206
的代码检查我的问题,我有同样的问题,我只是解决吧! http://stackoverflow.com/questions/21173133/many-to-many-and-form-symfony2 – JGrinon