/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Milestone::find(); $query->andFilterWhere(['project_id' => $this->project_id]); $dataProvider = new ActiveDataProvider(['query' => $query]); $query->andFilterWhere(['id' => $this->id]); $query->andFilterWhere(['user_id' => $this->user_id]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['like', 'title', $this->title]); return $dataProvider; }
public function search($params) { $query = Milestone::find(); $query->joinWith(["project"]); if (Yii::$app->user->identity->isViewingProject) { $query->where(["fkIDWithProjectID" => Yii::$app->user->identity->fkIDWithProjectID]); } $activeDataProvider = new ActiveDataProvider(["query" => $query, "pagination" => ["pageSize" => 20]]); $activeDataProvider->sort->attributes["projectName"] = ["asc" => ["project.name" => SORT_ASC], "desc" => ["project.name" => SORT_DESC]]; $activeDataProvider->sort->attributes["countInCompletedTasks"] = ["asc" => [$this->countInCompletedTasksSQL => SORT_ASC], "desc" => [$this->countInCompletedTasksSQL => SORT_DESC]]; $activeDataProvider->sort->attributes["countCompletedTasks"] = ["asc" => [$this->countCompletedTasksSQL => SORT_ASC], "desc" => [$this->countCompletedTasksSQL => SORT_DESC]]; if (!$this->load($params) || !$this->validate()) { return $activeDataProvider; } $query->andFilterWhere(["like", "milestone.id", $this->id])->andFilterWhere(["like", "milestone.name", $this->name])->andFilterWhere(["like", "project.name", $this->projectName])->andFilterWhere(["like", $this->countInCompletedTasksSQL, $this->countInCompletedTasks])->andFilterWhere(["like", $this->countCompletedTasksSQL, $this->countCompletedTasks])->andFilterWhere(["like", "milestone.dueDate", !empty($this->dueDate) ? Yii::$app->formatter->asDate($this->dueDate, "Y-MM-dd") : null])->andFilterWhere(["like", "milestone.completed", $this->completed]); return $activeDataProvider; }
<?php use kartik\widgets\DatePicker; use yii\helpers\ArrayHelper; use app\models\Milestone; use app\models\User; ?> <?php echo $form->field($task, "name"); ?> <?php if (Yii::$app->user->identity->isViewingProject) { echo $form->field($task, "fkIDWithMilestoneID")->dropDownList(ArrayHelper::map(Milestone::find()->joinWith(["project"])->where(["project.id" => $task->milestone->fkIDWithProjectID])->all(), "id", "name"), ["prompt" => "None"]); } else { echo $form->field($task, "fkIDWithMilestoneID")->dropDownList(ArrayHelper::map(Milestone::find()->all(), "id", "name"), ["prompt" => "None"]); } ?> <?php echo $form->field($task, "fkIDWithUserID")->dropDownList(ArrayHelper::map(User::find()->all(), "id", "fullName"), ["prompt" => "None"]); echo $form->field($task, "information")->textarea(); echo $form->field($task, "dueDate")->widget(DatePicker::className(), ["pluginOptions" => ["todayHighlight" => true]]); echo $form->field($task, "completed")->checkbox();