【发布时间】:2021-08-26 23:31:13
【问题描述】:
我在应用控制器上有一个简单的查询来生成列表视图。如果用户提供了搜索词,我需要添加可选的 andWhere。
这是我使用硬编码搜索词的查询:
$devSearch = '%youtube%';
$postsList = $em->getRepository('\\App\\Entity\\' . $model)
->createQueryBuilder('p')
->where($queryOpts['where'])
->andWhere('p.link LIKE :search')
->setParameter('search', $devSearch)
->setMaxResults($postPayload)
->setFirstResult($offset)
->getQuery()
->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
$totalItems = count($postsList);
我需要将此部分设为可选:
->andWhere('p.link LIKE :search')
->setParameter('search', $devSearch)
有什么直接的方法吗?
我认为我应该能够做到这一点,但它失败了:
$postsList = $em->getRepository('\\App\\Entity\\' . $model);
$postsList
->createQueryBuilder('p')
->where($queryOpts['where']);
if($devSearch) {
$postsList
->andWhere('p.link LIKE :search')
->setParameter('search', $devSearch)
}
$postsList
->setMaxResults($postPayload)
->setFirstResult($offset)
->getQuery()
->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
【问题讨论】:
-
它是如何失败的?错过';'时出现语法错误
-
即使使用分号也会失败并出现错误:消息:count():参数 #1 ($value) 必须是 Countable|array 类型,Doctrine\ORM\QueryBuilder 给定
标签: php doctrine-orm doctrine