如何修改CakePHP 3查询生成器,使其具有两个带有值(“或”逻辑函数)的“赞”函数?
这有效:
$exp->eq('b2','my_value')->like('b3','%'.$value.'%')
我想要这样的东西(它不起作用):
$exp->eq('b2','my_value')->like('b3','%'.$valueB3.'%')->like('b4','%'.$valueB4.'%')
答案 0 :(得分:2)
除非另有说明,否则表达式构建器将通过AND
组合语句。如果要将OR
与表达式生成器一起使用,请使用or_()
方法,并将生成的新表达式对象传递到所需的位置,例如:
$exp
->eq('b2', 'my_value')
->add($exp->or_(
function (\Cake\Database\Expression\QueryExpression $or) use ($valueB3, $valueB4) {
return $or
->like('b3', '%' . $valueB3 . '%')
->like('b4', '%' . $valueB4 . '%');
}
));
那会产生:
b2 = 'my_value' AND (b3 LIKE '%valueB3%' OR b4 LIKE '%valueB4%')
另请参见