Ich bekomme den Fehler Invalid parameter number: number of bound variables does not match number of tokens
auf diese Abfrage.
Ich sehe das Problem wirklich nicht, irgendwelche Ideen?
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();
}
Antworten:
2 für die Antwort № 1Firma kann kein Parameter sein, Sie müssen nur einen Alias angeben wie:
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 für die Antwort № 2
Sie müssen die genaue Anzahl der Parameter übergeben.
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();
}
BEARBEITET Der Join nimmt keine Objektparameter an. Dokumentation