I am looking to set a condition only for a single action in the controller, so I don't want to change my search
model.
My code looks like this:
public function actionRoles()
{
$searchModel = new EmployeeSearch();
//$searchModel->query()->where('role <> regular');
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('view_role', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
The commmented row shows my condition ($searchModel->query()->where('role <> regular');
), it's pretty straightforward but I have not found a solution that works online.
For reference I tried those:
Ok, I got it done, it works this way for me:
public function actionRoles()
{
$searchModel = new EmployeeSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->sort = ['defaultOrder' => ['role'=>SORT_ASC, 'fullname'=>SORT_ASC]];
$dataProvider->query->where('employee.role <> \'regular\'');
return $this->render('view_role', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
Certainly a bit complicated and doing it in the model would probably be better, but I only want it to use it in this action and have a bunch of other actions with the same search
model but different conditions.