具有两个相似值的 CakePHP 3 查询生成器
CakePHP 3 query builder with two like values
我如何修改我的 CakePHP 3 查询生成器,以便它可以有两个 "like" 具有值("OR" 逻辑函数)的函数?
这个有效:
$exp->eq('b2','my_value')->like('b3','%'.$value.'%')
我想要这样的东西(它不起作用):
$exp->eq('b2','my_value')->like('b3','%'.$valueB3.'%')->like('b4','%'.$valueB4.'%')
除非另有说明,否则表达式构建器将通过 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%')
另见
我如何修改我的 CakePHP 3 查询生成器,以便它可以有两个 "like" 具有值("OR" 逻辑函数)的函数?
这个有效:
$exp->eq('b2','my_value')->like('b3','%'.$value.'%')
我想要这样的东西(它不起作用):
$exp->eq('b2','my_value')->like('b3','%'.$valueB3.'%')->like('b4','%'.$valueB4.'%')
除非另有说明,否则表达式构建器将通过 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%')
另见