多対多の関係に関連する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'));
私が言っていることをあなたが理解し、あなたが私を助けることができることを願っています:)
ありがとう !