Esempio n. 1
0
 public function search($params, $where = null)
 {
     $query = Payments::find()->leftJoin(Expenses::tableName(), 'expenses.id = payments.idexpense')->leftJoin(Departments::tableName(), 'expenses.iddepartment = departments.id')->where($where);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 20], 'sort' => ['attributes' => ['name', 'type', 'price', 'date', 'nameDepartments' => ['asc' => ['departments.name' => SORT_ASC], 'desc' => ['departments.name' => SORT_DESC]], 'nameExpenses' => ['asc' => ['expenses.name' => SORT_ASC], 'desc' => ['expenses.name' => SORT_DESC]]]]]);
     $this->load($params);
     if (!$this->validate()) {
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'type' => $this->type, 'price' => $this->price]);
     $date = explode(">", $this->date);
     if (isset($date[1])) {
         $query->andWhere('date > ' . strtotime($date[0]));
         $query->andWhere('date < ' . strtotime($date[1]));
     }
     $query->andFilterWhere(['like', 'payments.name', $this->name]);
     $query->andFilterWhere(['like', 'departments.name', $this->nameDepartments]);
     $query->andFilterWhere(['like', 'expenses.name', $this->nameExpenses]);
     return $dataProvider;
 }