Yii2 mongodb 擴展的where的條件加入大於小於


1. mongodb的where中有比較豐富的 條件,如下:

 static $builders = [
  'NOT' => 'buildNotCondition',
  'AND' => 'buildAndCondition',
  'OR' => 'buildOrCondition',
  'BETWEEN' => 'buildBetweenCondition',
  'NOT BETWEEN' => 'buildBetweenCondition',
  'IN' => 'buildInCondition',
  'NOT IN' => 'buildInCondition',
  'REGEX' => 'buildRegexCondition',
  'LIKE' => 'buildLikeCondition',

];

 

 


但是沒有大於和小於等,因此我們需要加入大於,大於等於, 小於,小於等於

 

加入函數部分為:

在vendor/yiisoft/yii2-mongodb/src/QueryBuilder.php

加入函數:

public function buildGtCondition($operator, $operands)
{
if (!isset($operands[0], $operands[1])) {
throw new InvalidParamException("Operator '$operator' requires two operands.");
}
list($column, $value) = $operands;
return [$column => ['$gt' => $value]];
}


public function buildGteCondition($operator, $operands)
{
if (!isset($operands[0], $operands[1])) {
throw new InvalidParamException("Operator '$operator' requires two operands.");
}
list($column, $value) = $operands;
return [$column => ['$gte' => $value]];
}


public function buildLtCondition($operator, $operands)
{
if (!isset($operands[0], $operands[1])) {
throw new InvalidParamException("Operator '$operator' requires two operands.");
}
list($column, $value) = $operands;
return [$column => ['$lt' => $value]];
}

public function buildLteCondition($operator, $operands)
{
if (!isset($operands[0], $operands[1])) {
throw new InvalidParamException("Operator '$operator' requires two operands.");
}
list($column, $value) = $operands;
return [$column => ['$lte' => $value]];
}
 

buildCondition函數里面加入下面的部分代碼

public function buildCondition($condition)
{
static $builders = [
'NOT' => 'buildNotCondition',
'AND' => 'buildAndCondition',
'OR' => 'buildOrCondition',
'BETWEEN' => 'buildBetweenCondition',
'NOT BETWEEN' => 'buildBetweenCondition',
'IN' => 'buildInCondition',
'NOT IN' => 'buildInCondition',
'REGEX' => 'buildRegexCondition',
'LIKE' => 'buildLikeCondition',
'GT' => 'buildGtCondition',//大於
'GTE' => 'buildGteCondition',//大於等於
'LT' => 'buildLtCondition',//小於
'LTE' => 'buildLteCondition',//小於等於

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM