Actually, now that I look at it, I would also like to have the r.status in
the ON clause as well.


On Mon, Mar 10, 2014 at 1:17 PM, Levi Stanley <
[email protected]> wrote:

> I expected the DQL to look something like this:
>
> SELECT u, r FROM Application\Entity\User u LEFT JOIN u.userAdminRoles r ON
> r.user=u.id 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)
>
>
>
>
> On Mon, Mar 10, 2014 at 12:13 PM, Herman Peeren 
> <[email protected]>wrote:
>
>> What is wrong with the DQL? What did you expect and what did you get?
>>
>> Maybe you are looking for a ManyToMany-association: can a UserAdminRole
>> be assigned to multiple Users?
>>
>>
>> On Monday, 10 March 2014 15:25:51 UTC+1, Levi wrote:
>>>
>>> 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.
>>
>
>

-- 
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.

Reply via email to