File: /home/emblazeone/www/master-template/backend/modules/categories/models/SearchModel.php
<?php
namespace backend\modules\categories\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
class SearchModel extends Model
{
public $from,
$to,
$search,
$per_page=20,
$order;
public static $pageSizeList=[
'10'=>'10',
'20'=>'20',
'50'=>'50',
'100'=>'100',
'-1'=>'все'
];
public function rules()
{
return [
[['order', 'from', 'to', 'search','per_page'], 'safe']
];
}
public function search($modelName, $params)
{
$query = $modelName::find()
->leftJoin(CategoriesSites::tableName(), '{{%categories}}.id=category_id');
$site_id = Yii::$app->session->get('site_id', false);
if($site_id){
$query->andWhere([CategoriesSites::tableName().'.site_id'=>$site_id]);
}
// var_dump($query->createCommand()->rawSql);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'key' => 'id'
]);
$query = $query->orderBy('sort, id desc');
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
if($this->search) $query=$query->andWhere(['like','title',$this->search]);
if($this->per_page) $dataProvider->pagination->pageSize=$this->per_page;
return $dataProvider;
}
public function attributeLabels()
{
return [
'from' => 'Added From:',
'to' => 'Added To:',
'order' => \Yii::t('admin', 'Sort By:'),
];
}
}