我的查询是 doctirne 2。我在用户中有一个状态字段,私人或
民众。我希望能够运行此查询并显示所有评论
其中,仅当 userid = 当前登录时,状态= 公共和私有
用户 ID(我知道,$loggerUserVarID)
$q = $this->em->createQueryBuilder()
->select('c')
->from('\Entities\Comments', 'c')
->leftJoin('c.users', 'u')
->where('status = public') ??? display all public comments but private if it belpongs to the logged in user.?
->setParameter(1, $loggerUserVarID)
->getQuery();
目前,我在获得结果后使用 if 语句,有没有办法在此查询中执行 if 语句?
那么,您想返回注释“If status is 'public' or theownerId is $loggedUserVarID”,对吗?
请注意,如果 $loggedUserVarID 与所有者匹配,则您并不真正关心状态。
查看 querybuilder 和 dql 文档。他们非常清楚地解释了如何组合复杂的 where 条件。
您可能想要的是这样的:
$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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)