|
@ -0,0 +1,147 @@ |
|
|
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
namespace antgoods\goods\models\searchs; |
|
|
|
|
|
|
|
|
|
|
|
use yii\base\Model; |
|
|
|
|
|
use yii\data\ActiveDataProvider; |
|
|
|
|
|
use yii\helpers\ArrayHelper; |
|
|
|
|
|
use antgoods\goods\models\ars\Attribute; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* AttributeSearch represents the model behind the search form of `antgoods\goods\models\ars\Attribute`. |
|
|
|
|
|
*/ |
|
|
|
|
|
class AttributeSearch extends Attribute |
|
|
|
|
|
{ |
|
|
|
|
|
/** |
|
|
|
|
|
* @return array |
|
|
|
|
|
* 增加创建时间查询字段 |
|
|
|
|
|
*/ |
|
|
|
|
|
public function attributes() |
|
|
|
|
|
{ |
|
|
|
|
|
return ArrayHelper::merge(['created_at_range'], parent::attributes()); |
|
|
|
|
|
} |
|
|
|
|
|
/** |
|
|
|
|
|
* {@inheritdoc} |
|
|
|
|
|
*/ |
|
|
|
|
|
public function rules() |
|
|
|
|
|
{ |
|
|
|
|
|
return [ |
|
|
|
|
|
[['id', 'type', 'sort_order', 'is_delete', 'created_at', 'updated_at'], 'integer'], |
|
|
|
|
|
[['name', 'value'], 'safe'], |
|
|
|
|
|
['created_at_range','safe'], |
|
|
|
|
|
]; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* {@inheritdoc} |
|
|
|
|
|
*/ |
|
|
|
|
|
public function scenarios() |
|
|
|
|
|
{ |
|
|
|
|
|
// bypass scenarios() implementation in the parent class
|
|
|
|
|
|
return Model::scenarios(); |
|
|
|
|
|
} |
|
|
|
|
|
/** |
|
|
|
|
|
* @return array |
|
|
|
|
|
* 列格式 |
|
|
|
|
|
*/ |
|
|
|
|
|
public function columns() |
|
|
|
|
|
{ |
|
|
|
|
|
return [ |
|
|
|
|
|
[ |
|
|
|
|
|
'class' => 'blobt\grid\CheckboxColumn', |
|
|
|
|
|
'width' => '2%', |
|
|
|
|
|
'align' => 'center' |
|
|
|
|
|
], |
|
|
|
|
|
'id', |
|
|
|
|
|
'name', |
|
|
|
|
|
'value', |
|
|
|
|
|
'type', |
|
|
|
|
|
'sort_order', |
|
|
|
|
|
//'is_delete',
|
|
|
|
|
|
//'created_at',
|
|
|
|
|
|
//'updated_at',
|
|
|
|
|
|
[ |
|
|
|
|
|
'class' => 'iron\grid\ActionColumn', |
|
|
|
|
|
'align' => 'center', |
|
|
|
|
|
], |
|
|
|
|
|
]; |
|
|
|
|
|
} |
|
|
|
|
|
/** |
|
|
|
|
|
* @param $params |
|
|
|
|
|
* @return ActiveDataProvider |
|
|
|
|
|
* 不分页的所有数据 |
|
|
|
|
|
*/ |
|
|
|
|
|
public function allData($params) |
|
|
|
|
|
{ |
|
|
|
|
|
$query = Attribute::find(); |
|
|
|
|
|
$dataProvider = new ActiveDataProvider([ |
|
|
|
|
|
'query' => $query, |
|
|
|
|
|
'pagination' => false, |
|
|
|
|
|
'sort' => false |
|
|
|
|
|
]); |
|
|
|
|
|
$this->load($params); |
|
|
|
|
|
return $this->filter($query, $dataProvider); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Creates data provider instance with search query applied |
|
|
|
|
|
* |
|
|
|
|
|
* @param array $params |
|
|
|
|
|
* |
|
|
|
|
|
* @return ActiveDataProvider |
|
|
|
|
|
*/ |
|
|
|
|
|
public function search($params) |
|
|
|
|
|
{ |
|
|
|
|
|
$query = Attribute::find(); |
|
|
|
|
|
|
|
|
|
|
|
// add conditions that should always apply here
|
|
|
|
|
|
|
|
|
|
|
|
$dataProvider = new ActiveDataProvider([ |
|
|
|
|
|
'query' => $query, |
|
|
|
|
|
'pagination' => [ |
|
|
|
|
|
'pageSizeLimit' => [1, 200] |
|
|
|
|
|
], |
|
|
|
|
|
'sort' => [ |
|
|
|
|
|
'defaultOrder' => [ |
|
|
|
|
|
'id' => SORT_DESC, |
|
|
|
|
|
] |
|
|
|
|
|
], |
|
|
|
|
|
]); |
|
|
|
|
|
|
|
|
|
|
|
$this->load($params); |
|
|
|
|
|
return $this->filter($query, $dataProvider); |
|
|
|
|
|
} |
|
|
|
|
|
/** |
|
|
|
|
|
* @param $query |
|
|
|
|
|
* @param $dataProvider |
|
|
|
|
|
* @return ActiveDataProvider |
|
|
|
|
|
* 条件筛选 |
|
|
|
|
|
*/ |
|
|
|
|
|
private function filter($query, $dataProvider){ |
|
|
|
|
|
if (!$this->validate()) { |
|
|
|
|
|
// uncomment the following line if you do not want to return any records when validation fails
|
|
|
|
|
|
// $query->where('0=1');
|
|
|
|
|
|
return $dataProvider; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// grid filtering conditions
|
|
|
|
|
|
$query->andFilterWhere([ |
|
|
|
|
|
'id' => $this->id, |
|
|
|
|
|
'type' => $this->type, |
|
|
|
|
|
'sort_order' => $this->sort_order, |
|
|
|
|
|
'is_delete' => $this->is_delete, |
|
|
|
|
|
'created_at' => $this->created_at, |
|
|
|
|
|
'updated_at' => $this->updated_at, |
|
|
|
|
|
]); |
|
|
|
|
|
|
|
|
|
|
|
$query->andFilterWhere(['like', 'name', $this->name]) |
|
|
|
|
|
->andFilterWhere(['like', 'value', $this->value]); |
|
|
|
|
|
if ($this->created_at_range) { |
|
|
|
|
|
$arr = explode(' ~ ', $this->created_at_range); |
|
|
|
|
|
$start = strtotime($arr[0]); |
|
|
|
|
|
$end = strtotime($arr[1]) + 3600 * 24; |
|
|
|
|
|
$query->andFilterWhere(['between', 'created_at', $start, $end]); |
|
|
|
|
|
} |
|
|
|
|
|
return $dataProvider; |
|
|
|
|
|
} |
|
|
|
|
|
} |