多対多の関係を持つuser、role、user_x_roleの3つの単純なテーブルがあります。ユーザーとロールの2つのエンティティがあります。ユーザーエンティティには、リレーションアノテーション付きの$userRolesプロパティがあります。コントローラでは、特定の役割を持つすべてのユーザーを取得する必要があります。しかし、コントローラーでJOINを使用する方法がわかりません。現在の間違ったコード:
$role = $this->getDoctrine()->getRepository('TestBackEndBundle:Role');
$roles = $role->findBy(array('name' => 'ROLE_PARTNER'));
$user = $this->getDoctrine()->getRepository('TestBackEndBundle:User');
$partners = $user->findBy(array('userRoles' => $roles));
「未定義のインデックス:joinColumnsin...」と表示されます。しかし、UserエンティティにjoinColumnsがあります。
/**
* @ORM\ManyToMany(targetEntity="Role")
* @ORM\JoinTable(name="user_x_role",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE", onUpdate="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id", onDelete="CASCADE", onUpdate="CASCADE")}
* )
* @var ArrayCollection
*/
protected $userRoles;