2013-06-27 42 views
4

我得到这个查询错误Invalid parameter number: number of bound variables does not match number of tokens不匹配的令牌数量。主义DQL非法参数编号:绑定变量的数量

我实在看不出这个问题,任何想法?

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(); 

} 

回答

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(); 
} 
1

您必须传递确切数量的参数。

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(); 
} 

EDITED 的加入并没有采取任何对象PARAMS。 Documentation

+0

仍然得到同样的错误。当我将公司的联合部分移除时,它似乎有效? – Simon

相关问题