什么是andFilterWhere()条件操作数的目的?

Har*_*per 2 yii2

我是新手Yii2 framework.我正在尝试学习过滤,但不知怎的,我不理解它.我查看了文档,但它也没有帮助.有人可以向我解释一下这个功能是一步一步的吗?

public function filteringValues($query)
{   
        $query->andFilterWhere([
            '>',
            'table1.column1',
            date('Y-m-d H:i:s'),
        ]);
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

就像doc指出的那样,如果操作数不为空,则andFilterWhere应用条件

在你的特定情况下(因为date('Y-m-d H:i:s')总是返回一个值),

$query->andFilterWhere(['>', 'table1.column1', date('Y-m-d H:i:s')]);
Run Code Online (Sandbox Code Playgroud)

将等同于

$query->andWhere(['>', 'table1.column1', date('Y-m-d H:i:s')]);
Run Code Online (Sandbox Code Playgroud)

这被翻译成sql到像condtion

AND (`table1`.`column1`) > '2017-08-12 06:10:32'
Run Code Online (Sandbox Code Playgroud)

andFilterWhere当与可选值(作为过滤器参数接收)进行比较时,是一个用例用例.

$query->andFilterWhere(['>', 'table1.column1', $date]);
Run Code Online (Sandbox Code Playgroud)

它的目的是不检查天气$date是否是空的

$query->andFilterWhere([
    'table1.column1' => $param1,
    'table1.column2' => $param2,
    'table1.column3' => $param3,
]);
Run Code Online (Sandbox Code Playgroud)

在此示例中,查询仅对非的参数应用条件,忽略额外的参数