[英]How to use “not between” in cakephp 3.x
我想查询不之间在cakephp 3.x
我可以这样使用。 但是我不能在两者之间不使用。
array(function ($exp) use ($field_value, $txtRule1, $txtRule2) {
return $exp->between($field_value, $txtRule1, $txtRule2);
});
任何人都有关于如何在cakephp 3.x之间不使用的想法
谢谢和最好的问候。
只需将其包装在QueryExpression::not()
:
use \Cake\Database\Expression\BetweenExpression;
use \Cake\Database\Expression\QueryExpression;
// ...
function (QueryExpression $exp) use ($field_value, $txtRule1, $txtRule2) {
return
$exp->not(
new BetweenExpression(
$field_value,
$txtRule1,
$txtRule2,
$exp->typeMap()->type($field_value)
)
);
}
需要新的表达式实例,否则将表达式自身嵌套,这将在某个时候导致无限循环。 如果您确定要使用空的表达式实例,也可以使用克隆
function (QueryExpression $exp) use ($field_value, $txtRule1, $txtRule2) {
$between = clone $exp;
return
$exp->not(
$between->between($field_value, $txtRule1, $txtRule2)
);
}
或将查询实例传递给可调用对象并创建新的查询表达式实例
function (QueryExpression $exp) use ($field_value, $txtRule1, $txtRule2, $query) {
return
$exp->not(
$query->newExpr()->between($field_value, $txtRule1, $txtRule2)
);
}
也可以看看
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.