Reputation: 384
I'm tring to get events of a month and Symfony2 display this error :
Warning: Missing argument 2 for Doctrine\ORM\QueryBuilder::setParameter(), called in D:\Works\Development\www\intranet\src\Intranet\IntranetBundle\Entity\EventRepository.php on line 22 and defined in D:\Works\Development\www\intranet\vendor\doctrine\orm\lib\Doctrine\ORM\QueryBuilder.php line 356
indexAction
$date_to = $year . "-" . $m . "-01";
$date_from = $year . "-" . $m . "-" . $nDay;
$events = $this->getDoctrine()
->getManager()
->getRepository('IntranetIntranetBundle:Event')
->getEventsOfTheMonth($date_to, $date_from);
EventRepository
class EventRepository extends EntityRepository
{
public function getEventsOfTheMonth($date_from, $date_to) {
$q = $this->createQueryBuilder('e')
->where('e.date BETWEEN :date_from AND :date_to')
->setParameter(array(
'date_from' => $date_from,
'date_to' => $date_to
))
->orderBy('e.date', 'ASC');
return $q->getQuery()->getResult();
}
}
What am I doing wrong?
Upvotes: 2
Views: 3234
Reputation: 52493
https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/QueryBuilder.php#L515
setParameter($key, $value, $type)
does not expect an array while setParameters($parameters)
does.
@param string|integer $key
Use the following:
// ...
->setParameter('date_from', $date_from)
->setParameter('date_to', $date_to)
... or ...
->setParameters( array(/* ... */))
... or ...
->setParameters(new ArrayCollection(array(
new Parameter('date_from', $date_from),
new Parameter('date_to', $date_to),
)))
https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/QueryBuilder.php#L558
Upvotes: 4
Reputation: 188
You are probably looking for the QueryBuilder::setParameters(array $parameters)
method, which expects an array.
Upvotes: 0