Doctrine DQL Недопустимый номер параметра: количество связанных переменных не соответствует количеству токенов

Я получаю сообщение об ошибке Invalid parameter number: number of bound variables does not match number of tokens в этом запросе.

Я действительно не вижу проблемы, есть идеи?

public function getByPartial($q, Company $company)
{

    $query = $this->createQueryBuilder('u')
        ->join('u.company',':company')
        ->where('u.firstName LIKE :q')
        ->orWhere('u.lastName LIKE :q')
        ->setParameters(array('company' => $company, 'q' => '%'.$q.'%'))
        ->getQuery();
    return $query->getResult();

}

person Simon    schedule 27.06.2013    source источник


Ответы (2)


компания не может быть параметром, вам просто нужно указать псевдоним, например:

public function getByPartial($q, Company $company)
{
    $query = $this->createQueryBuilder('u')
        ->addSelect('c')
        ->join('u.company','c')
        ->where('u.firstName LIKE :q OR u.lastName LIKE :q')
        ->andWhere('c.id = :companyId')
        ->setParameters(array('companyId' => $company->getId(), 'q' => '%'.$q.'%'))
        ->getQuery();
    return $query->getResult();
}
person AlterPHP    schedule 27.06.2013

Вы должны передать точное количество параметров.

public function getByPartial($q, Company $company)
{
    $query = $this->createQueryBuilder('u')
        ->join('u.company','c')
        ->where('u.firstName LIKE :q1 OR u.lastName LIKE :q2')
        ->andWhere('c.id = :company_id')
        ->setParameters(array('company_id' => $company->getId(), 'q1' => '%'.$q.'%', 'q2' => '%'.$q.'%'))
        ->getQuery();
    return $query->getResult();
}

ОТРЕДАКТИРОВАНО Соединение не принимает никаких параметров объекта. Документация

person Fracsi    schedule 27.06.2013
comment
Все еще получаю ту же ошибку. Когда я удаляю часть соединения с компанией, кажется, что это работает? - person Simon; 27.06.2013