Reputation: 79
$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();
I am trying to filter search. How can i check if parameter is empty, don' t add to where query ?
I followed this link : doctrine2 - querybuilder, empty parameters
But i doesn't works for me.
When i try to like that, i got an error :
Undefined method 'setFirstResult'. The method name must start with either findBy or findOneBy!
Thanks in advice..
Update
if i add to command line setFirstResult
error change :
Undefined method 'getQuery'. The method name must start with either findBy or findOneBy!
When i used to use pdo, i can like this using bind parameters. But i don't know how to do in Doctrine.
Upvotes: 1
Views: 1617
Reputation: 1499
You should keep using $holiday_packages
instead of $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();
Upvotes: 2