*In DQL there is no ON*: the ON clause defines over what column the association (relation) is mapped. That information is put in the mapper. When you define a OneToOne, ManyToOne, OneToMany and ManyToMany relation, you give information about targetEntity, mappedBy, referencedColumnName etc.
On Monday, 10 March 2014 18:19:02 UTC+1, Levi wrote: > > 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]<javascript:> > > 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]<javascript:> >> > 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] <javascript:>. >>> To post to this group, send email to [email protected]<javascript:> >>> . >>> 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.
