I have 3 simple tables: user, role, user_x_role with Many-to-Many relationship. I have 2 objects: User and Role. A user object has a $ userRoles property with a relationship annotation. In the controller, I need to get all users with a specific role. But I do not know how to use JOIN in the controller. Current invalid code:
$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));
It shows "Undefined index: joinColumns in ...". But I have joinColumns in the User entity:
/**
* @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;
source
share