skeeks\cms\models\Search::search PHP Method

    public function search($params)
    {
        if (!$this->loadedModel->load($params)) {
            return $this->dataProvider;
        }
        $query = $this->dataProvider->query;
        if ($columns = $this->loadedModel->getTableSchema()->columns) {
            /**
             * @var \yii\db\ColumnSchema $column
             */
            foreach ($columns as $column) {
                if ($column->phpType == "integer") {
                    $query->andFilterWhere([$this->loadedModel->tableName() . '.' . $column->name => $this->loadedModel->{$column->name}]);
                } else {
                    if ($column->phpType == "string") {
                        $query->andFilterWhere(['like', $this->loadedModel->tableName() . '.' . $column->name, $this->loadedModel->{$column->name}]);
                    }
                }
            }
        }
        return $this->dataProvider;
    }

Usage Example

Example #1
0
 /**
  * @return string
  */
 public function run()
 {
     $modelSeacrhClass = $this->modelSearchClassName;
     if (!$modelSeacrhClass) {
         $search = new Search($this->controller->modelClassName);
         $dataProvider = $search->search(\Yii::$app->request->queryParams);
         $searchModel = $search->loadedModel;
     } else {
         $searchModel = new $modelSeacrhClass();
         $dataProvider = $searchModel->search(\Yii::$app->request->queryParams);
     }
     //Дополнительная обработка Дата провайдера
     if ($this->dataProviderCallback && is_callable($this->dataProviderCallback)) {
         $dataProviderCallback = $this->dataProviderCallback;
         $dataProviderCallback($dataProvider);
     }
     //Дополнительная обработка Дата провайдера
     if ($this->filter && is_callable($this->filter)) {
         $filter = $this->filter;
         $filter($dataProvider, \Yii::$app->request->queryParams);
     }
     $gridConfig = ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'adminController' => $this->controller, 'columns' => $this->columns];
     $gridConfig = ArrayHelper::merge($gridConfig, $this->gridConfig);
     $this->viewParams = ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'controller' => $this->controller, 'columns' => $this->columns, 'gridConfig' => $gridConfig];
     return parent::run();
 }
All Usage Examples Of skeeks\cms\models\Search::search