• 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',//小于等于
  • 相关阅读:
    【Lucene3.6.2入门系列】第14节_SolrJ操作索引和搜索文档以及整合中文分词
    最短路--Dijkstra算法 --HDU1790
    XMPPFrameWork IOS 开发(六)聊天室
    InfoSphere BigInsights 安装部署
    EXCEL VBA运行不显示系统提示
    android 随手记 倒计时
    Conversion between json and object
    java 运行项目不放到tomcat下的webapps文件夹下放到自己建的文件夹中的处理办法
    sBPM产品介绍
    linux进程,作业,守护进程,进程间同步
  • 原文地址:https://www.cnblogs.com/whatstone/p/12699174.html
Copyright © 2020-2023  润新知