I tried to use query builder in my modelSearch to generate gridview, but i got this error
7645
ModelSearch
public function searchcoursegroupings($params,$user=null)
{
$query = (new \yii\db\Query())
->select (['cs.academic_semester_id', 'c.id', 'c.course_name',
'c.course_academic_year_id', 'c.course_academic_semester_id',
'c.course_faculty_id', 'c.course_department_id', 'c.course_programme_id', 'c.course_unit',
'ci.id', 'i.instructor_id', 'count(course_name) AS count'])
->from('courses c')
->join('JOIN', 'academic_semesters cs', 'c.course_academic_semester_id = cs.academic_semester_id')
->join('JOIN', 'course_instructors ci', 'c.id = ci.course_id')
->join('JOIN', 'instructors i', 'ci.instructor_id = i.instructor_id')
->where([
'c.is_status' => '0',
'i.user_id' => $user
])
->groupBy('i.instructor_id', 'c.course_name')
->orderBy(['i.instructor_id'=>SORT_DESC, 'c.course_name'=>SORT_DESC])
->all();
$dataProvider = new ActiveDataProvider([
'query' => $query, 'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]],
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'course_academic_year_id' => $this->course_academic_year_id,
'course_academic_semester_id' => $this->course_academic_semester_id,
'course_faculty_id' => $this->course_faculty_id,
'course_department_id' => $this->course_department_id,
'course_programme_id' => $this->course_programme_id,
'course_unit' => $this->course_unit,
]);
$query->andFilterWhere(['like', 'course_type', $this->course_type])
->andFilterWhere(['like', 'course_name', $this->course_name])
->andFilterWhere(['like', 'course_code', $this->course_code]);
return $dataProvider;
}
}
Controller
public function actionAvailableCoursesGroupings()
{
$user = Yii::$app->getid->getId();
$instructorSession = Yii::$app->session->get('instructor_id');
$searchModel = new CoursesSearch();
$dataProvider = $searchModel->searchcoursegroupings(Yii::$app->request->queryParams, $user);
return $this->render('available-courses-groupings', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
If I comment the andFilterWhere, the error becomes
The "query" property must be an instance of a class that implements the QueryInterface e.g. yii\db\Query or its subclasses.
7646
How do I resolve thiese errors.
Thanks