/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Train::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); 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; } $query->andFilterWhere(['id' => $this->id, 'category' => $this->category, 'level_id' => $this->level_id, 'recruit_count' => $this->recruit_count, 'status' => $this->status, 'period_num' => $this->period_num, 'lesson' => $this->lesson, 'create_time' => $this->create_time, 'update_time' => $this->update_time]); if (!empty($this->begin_date) && !empty($this->end_date)) { $query->andFilterWhere(['>', 'begin_time', $this->begin_date])->andFilterWhere(['<', 'begin_time', $this->end_date]); } $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'address', $this->address])->andFilterWhere(['like', 'content', $this->content])->andFilterWhere(['like', 'create_user', $this->create_user])->andFilterWhere(['like', 'update_user', $this->update_user]); $query->orderBy('id desc'); return $dataProvider; }
public function actionIndex() { $levelId = \Yii::$app->request->get('levelId') ? \Yii::$app->request->get('levelId') : 2; $orderBy = \Yii::$app->request->get('order_by') ? \Yii::$app->request->get('order_by') : '`begin_time` desc'; $query = Train::find()->where(['level_id' => $levelId]); $countQuery = clone $query; $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => '10']); $models = $query->offset($pages->offset)->limit($pages->limit)->orderBy($orderBy)->all(); if (!empty($models)) { foreach ($models as $key => $val) { $val->begin_time = date('Y-m-d', strtotime($val->begin_time)); //录取人数 $countResult = \app\models\TrainUsers::find()->where(['train_id' => $val->id, 'status' => [TrainUsers::ENROLL, TrainUsers::DOING, TrainUsers::END, TrainUsers::PASS, TrainUsers::NO_PASS]]); $val->already_recruit_count = $countResult->count(); } } return $this->render('index', ['models' => $models, 'pages' => $pages, 'levelId' => $levelId, 'orderBy' => $orderBy]); }