谁一开始就是大神?

一段代码逻辑问题[2.0]

public function search($params)
{
    $query = $this->finder->getUserQuery();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    if (!($this->load($params) && $this->validate())) {
        return $dataProvider;
    }
    
    if ($this->created_at !== null) {
        $date = strtotime($this->created_at);
        $query->andFilterWhere(['between', 'created_at', $date, $date + 3600 * 24]);
    }
    
    $query->andFilterWhere(['like', 'username', $this->username])
        ->andFilterWhere(['like', 'email', $this->email])
        ->andFilterWhere(['registration_ip' => $this->registration_ip]);

    return $dataProvider;
}

所以…问题是啥?
楼主的网名好熟悉~是学Drupal的吧
这是yii2的过滤套路,重点是query。
假设Gridview中填入过滤条件后,url是这样:
那么控制器会将Yii::$app->request->queryParams作为参数调用search($params),打印出的$params是这样的:
search函数中load($params)后,$this打印出来可以看到$this->code,$this->name等的值:
至于你的例子中$this->created_at的处理,则表示如果指定了’创建时间’,那么就增加过滤条件:那个时刻起24小时内创建的记录。

赞(0) 打赏
未经允许不得转载:菜鸟之家 » 一段代码逻辑问题[2.0]

评论 抢沙发

登录

找回密码

注册