/ / Doctrine DQL Ungültige Parameternummer: Die Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein

Doctrine DQL Ungültige Parameternummer: Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein - PHP, Symfony, Doctrine2, Prepared-Statement, Dql

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 № 1

Firma 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