我想做的事情似乎很“经典”,但我没有找到任何例子......这是一种搜索表单,主要是可选参数。
这是我的代码:
$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
我确信有更好的方法来实现这一点,我只是找不到!