我想查询不在 cakephp 3.x 之间
我可以像这样使用。但我不能使用不在之间。
array(function ($exp) use ($field_value, $txtRule1, $txtRule2) {
return $exp->between($field_value, $txtRule1, $txtRule2);
});
任何人都知道如何在 cakephp 3.x 之间使用 not
谢谢和最好的问候。
我想查询不在 cakephp 3.x 之间
我可以像这样使用。但我不能使用不在之间。
array(function ($exp) use ($field_value, $txtRule1, $txtRule2) {
return $exp->between($field_value, $txtRule1, $txtRule2);
});
任何人都知道如何在 cakephp 3.x 之间使用 not
谢谢和最好的问候。
只需将其包装在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)
);
}
也可以看看