如何使用symfony查询构建器为选择查询的WHERE子句使用可选参数。
实施例。
在php中,
$ userid =(empty())?' userid ='。$ userid:''
Qry:" SELECT * FROM users"。$ userid
同样,在symfony中,如何使用CreateQueryBuilder在Where子句中使用可选参数????
答案 0 :(得分:1)
您的存储库中的某个位置或您制作QB的位置:
// this works in EntityRepository
$qb = $this->createQueryBuilder();
// otherwise $em instanceof EntityManager
// $qb = $em->createQueryBuilder()
$qb
->select('ss, ls')
->innerJoin('ss.linkSomething', 'ls')
->where('ss.fieldOne = 1')
;
// $one is your first condition
if($one){
$qb->andWhere('ss.fieldTwo = 2');
}
// $two is your second condition
if($two){
$qb->andWhere('ls.fieldOne = 1');
}
只需创建一次QueryBuilder实例,然后开始以您选择和加入的实体所需的任意组合添加任何JOIN或WHERE。
之后 不要忘记 :
//setup params, if they're in query
$qb->setParameters($arrParam);
//to check sql
// $sql = $qb->getQuery()->getSql();
//to check Dql
// $dql = $qb->getQuery()->getDql();
//result
$res = $qb->getQuery()->getResult();// any result method you need by doctrine documentation
<强> UPD:强> 有关read this documentation的更多信息,请参阅完整的示例。