我的查询构建器表示法有问题。我想根据if语句添加其他方法。我像下面一样扭动,但它无法正常工作
$repository->createQueryBuilder('k')
->where('k.autor LIKE :autor OR k.tytul LIKE :tytul ');
if($tag!==''){
$repository->createQueryBuilder('k')->andWhere('k.cena=:jezyk');
$repository->createQueryBuilder('k') ->setParameter('jezyk',$tag);
}
$repository->createQueryBuilder('k')->setParameter('autor', '%' . $s . '%');
$repository->createQueryBuilder('k')->setParameter('tytul', '%' . $s . '%');
query=$repository->createQueryBuilder('k')->getQuery();
$searched_books = $query->getResult();
我想我用对象犯了错误。有人可以告诉我吗?提前致谢
答案 0 :(得分:0)
问题是createQueryBuilder
方法将在每次调用时创建一个新的查询构建器。你应该尝试这样的事情:
$qb = $repository->createQueryBuilder('k');
$qb->where('k.autor LIKE :autor OR k.tytul LIKE :tytul');
if ($tag !== '') {
$qb->andWhere('k.cena = :jezyk');
$qb->setParameter('jezyk', $tag);
}
$qb->setParameter('autor', '%' . $s . '%');
$qb->setParameter('tytul', '%' . $s . '%');
$searched_books = $qb->getQuery()->getResult();