$repository = $this->getEntityManager()->getRepository('App\Entity\HolidayPackages');
$holiday_packages = $repository
->createQueryBuilder('hp')
->addSelect('hpt')
->innerJoin('hp.holiday_packages_translation', 'hpt')
->where('hpt.code = :code')
->setParameter('code', $language_code)
->andWhere('hpt.title LIKE :title')
->setParameter('title', $title . '%');
if (!empty($starting_date)) {
$repository
->andWhere('hp.starting_date = :starting_date')
->setParameter('starting_date', $starting_date);
}
$repository
->setFirstResult($offset)
->setMaxResults($limit)
->getQuery()
->getResult();
我正在尝试过滤搜索。我怎样才能检查参数是否为空,不要“ t添加到查询的位置?
我点了这个链接:doctrine2 - querybuilder, empty parameters
但我不适合我。
当我尝试这样的时候,我收到了一个错误:
未定义的方法' setFirstResult'。方法名称必须以findBy或findOneBy!
开头
感谢您的建议..
更新
如果我添加到命令行setFirstResult
错误更改:
未定义的方法' getQuery'。方法名称必须以findBy或findOneBy!
开头
当我以前使用pdo时,我可以使用绑定参数。但我不知道如何在Doctrine中做。
答案 0 :(得分:2)
您应该继续使用$holiday_packages
而不是$repository
。
$repository = $this->getEntityManager()->getRepository('App\Entity\HolidayPackages');
$holiday_packages = $repository
->createQueryBuilder('hp')
->addSelect('hpt')
->innerJoin('hp.holiday_packages_translation', 'hpt')
->where('hpt.code = :code')
->setParameter('code', $language_code)
->andWhere('hpt.title LIKE :title')
->setParameter('title', $title . '%');
if (!empty($starting_date)) {
$holiday_packages->andWhere('hp.starting_date = :starting_date')
->setParameter('starting_date', $starting_date);
}
$holiday_packages->setFirstResult($offset)
->setMaxResults($limit)
->getQuery()
->getResult();