doctrine 2 - query builder conditional queries... If statements?
My query is doctirne 2. i have a status field in users, private or public. i want to be able to run this query and display all comments where status= public and private only if userid = current logged in user id(which i know, $loggerUserVarID)
$q = $this->em->createQueryBuilder()
->select('c')
->from('\Entities\Comments', 'c')
->leftJoin('c.users', 'u')
->where('stat开发者_如何转开发us = public') ??? display all public comments but private if it belpongs to the logged in user.?
->setParameter(1, $loggerUserVarID)
->getQuery();
at the moment, i am using an if statement after i get thee results, is there a way to do an if statement inside this query?
So, you want to return Comments "If status is 'public' or the ownerId is $loggedUserVarID", right?
Note that if $loggedUserVarID matches the owner, you don't really care about status.
Check out the querybuilder and dql docs. They explain pretty clearly how to put together complex where conditions.
What you probably want is something like:
$q = $this->em->createQueryBuilder()
->select('c')
->from('\Entities\Comments', 'c')
->join('c.users', 'u')
->where(
$qb->expr()->orX(
$qb->expr()->eq('status','public'),
$qb->expr()->eq('u.id',$loggedInUser)
)
)
->setParameter(1, $loggerUserVarID)
->getQuery();
精彩评论