一段代码逻辑问题 [ 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;
}
最佳答案
其他 2 个回答
-
这是yii2的过滤套路,重点是query。
假设Gridview中填入过滤条件后,url是这样:
http://domain/advertise/customer?Sch[code]=me&Sch[name]=self&Sch[description]=test&Sch[notes]=
那么控制器会将
Yii::$app->request->queryParams
作为参数调用search($params),打印出的$params是这样的:[ 'Sch' => [ 'code' => 'me' 'name' => 'self' 'description' => 'test' 'notes' => '' ] ]
search
函数中load($params)
后,$this
打印出来可以看到$this->code
,$this->name
等的值:[yii\db\BaseActiveRecord:_attributes] => [ 'code' => 'me' 'name' => 'self' 'description' => 'test' 'notes' => '' ]
至于你的例子中
$this->created_at
的处理,则表示如果指定了'创建时间',那么就增加过滤条件:那个时刻起24小时内创建的记录。strive 觉得很赞
drupal
注册时间:2011-09-15
最后登录:2015-09-06
在线时长:3小时13分
最后登录:2015-09-06
在线时长:3小时13分
- 粉丝4
- 金钱20
- 威望0
- 积分50