2019-01-06 08:13:26 2440次浏览 2条回答 0 悬赏 10 金钱

如题,$query->andFilterCompare('value', '<=100'); 这个方法想了很久就没想到有什么场景应用是有优势的,直接用 filterWhere() 不是更好吗?

  • 回答于 2019-01-06 09:01 举报

    你这样用好像错了吧???
    andFilterCompare ($name, $value, $defaultOperator = '=')

    手册

    3 条回复
    回复于 2019-01-08 23:02 回复

    我这样写也是可以的,会智能匹配手册上列出的操作符。但是我提问的重点并不是如何调用的问题,而是我不是有什么场景下用得着这个方法

    回复于 2019-01-10 08:52 回复

    你可以看一下源码:yii\db\Query第855行(2.0.15.1),最后其实还是调用了andFilterWhere()方法:

    public function andFilterCompare($name, $value, $defaultOperator = '=')
    {
        if (preg_match('/^(<>|>=|>|<=|<|=)/', $value, $matches)) {
            $operator = $matches[1];
            $value = substr($value, strlen($operator));
        } else {
            $operator = $defaultOperator;
        }
    
        return $this->andFilterWhere([$operator, $name, $value]);
    }
    
    回复于 2019-01-10 13:54 回复

    说白了这方法除了不严谨外没任何的好处。。。。

  • 回答于 2019-01-16 15:25 举报

    垃圾的方法

您需要登录后才可以回答。登录 | 立即注册
OldMan
职场新人

OldMan

注册时间:2017-01-17
最后登录:2019-05-14
在线时长:3小时38分
  • 粉丝1
  • 金钱50
  • 威望0
  • 积分80

热门问题