0

私がやりたいことはかなり「古典的」に思えますが、例が見つかりません...これは、ほとんどがオプションのパラメーターを持つ一種の検索フォーム用です。

これが私のコードです:

$obj = $this->getEntityManager()
        ->createQueryBuilder()
            ->select("p")
            ->from("Client")
        if ($email) {
            $obj->add('where', $obj->expr()->like('p.email', ':email'));
        }
        if ($name) {
            $obj->add('where', $obj->expr()->like('p.name', ':name'));
        }
        if ($firstname) {
            $obj->add('where', $obj->expr()->like('p.firstname', ':firstname'));
        }
        if ($postalCode) {
            $obj->add('where', $obj->expr()->like('p.postalCode', ':postalCode'));
        }

$obj->setParameters(array('email' => $email,'name'=> $name, 'firstname' => $firstname, 'postalCode' => $postalCode))
        ->getQuery()->getResult();

しかし、もちろん、 にいくつかのパラメーターがある場合null:Invalid parameter number: number of bound variables does not match number of tokens

それを達成するためのより良い方法があると確信していますが、私はそれを見つけられません!

4

1 に答える 1