I am doing a left join, however, it doesn't seem to be working. I have a
users table, and a roles table, a user can have many roles. This is what
my users attribute looks like:
class User {
...
/**
* @var \Application\Entity\UserAdminRole[]
*
* @ORM\OneToMany(targetEntity="Application\Entity\UserAdminRole",
mappedBy="user")
*/
private $userAdminRoles;
}
In my UserAdminRole class:
Class UserAdminRole {
...
/**
* @var \Application\Entity\User
*
* @ORM\ManyToOne(targetEntity="Application\Entity\User",
inversedBy="userAdminRoles")
*/
private $user;
}
My this is what my query looks like:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select(array('u', 'r'))
->from('Application\\Entity\\User', 'u')
->leftJoin('u.userAdminRoles', 'r')
->where('u.site = :site_id AND u.emailAddress = :username
AND u.password = :password AND r.status = :status')
->orWhere('u.site = :site_id AND u.phoneNumber = :username
AND u.password = :password AND r.status = :status')
->setParameters(
array(
'site_id' => $siteId,
'username' => $username,
'password' => $password,
'status' => 'active'
)
)->setMaxResults(1);
But this is the resulting DQL:
SELECT u, r FROM Application\Entity\User u LEFT JOIN
u.userAdminRoles r WHERE (u.site = :site_id AND u.emailAddress = :username
AND u.password = :password AND r.status = :status) OR (u.site = :site_id
AND u.phoneNumber = :us
ername AND u.password = :password AND r.status = :status)
There are no exceptions thrown, everything looks fine, however, the DQL
isn't right.
What am I doing wrong?
--
You received this message because you are subscribed to the Google Groups
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.