Search 教义2:条件对条件
我想做的似乎很“经典”,但我找不到任何例子。。。 这是一种搜索形式,主要是可选参数 这是我的密码:Search 教义2:条件对条件,search,doctrine-orm,conditional,add,where,Search,Doctrine Orm,Conditional,Add,Where,我想做的似乎很“经典”,但我找不到任何例子。。。 这是一种搜索形式,主要是可选参数 这是我的密码: $obj = $this->getEntityManager() ->createQueryBuilder() ->select("p") ->from("Client") if ($email) { $obj->add('where', $obj->expr
$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
处有一些参数:无效参数编号:绑定变量的数量与令牌的数量不匹配
我确信有更好的方法来实现这一点,我就是找不到 有一个名为$parameters的数组变量,然后在每个if语句的主体内设置它
$parameters = array()
$obj = $this->getEntityManager()
->createQueryBuilder()
->select("p")
->from("Client")...
if ($email) {
$obj->add('where', $obj->expr()->like('p.email', ':email'));
$parameters['email'] = $email;
}
if ($name) {
$obj->add('where', $obj->expr()->like('p.name', ':name'));
$parameters['name'] = $name;
}
...
$obj->setParameters($parameters)->getQuery()->getResult();
太好了,我不知道为什么我没想到。谢谢