Hotgeart
Hotgeart

Reputation: 384

Warning: Missing argument 2 for QueryBuilder::setParameter()

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

Answers (2)

Nicolai Fröhlich
Nicolai Fröhlich

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

Marmelatze
Marmelatze

Reputation: 188

You are probably looking for the QueryBuilder::setParameters(array $parameters) method, which expects an array.

Upvotes: 0

Related Questions