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:
You can try this way
$searchModel = new EmployeeSearch();
$searchModel->role = 'regular';
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
In Search model :
$query->andFilterWhere(['<>', 'role', $this->role]);
Second way pass second parameter like :
$dataProvider = $searchModel->search(Yii::$app->request->queryParams, $role = 'regular');
In search model
if($role == 'regular') {
$query->andWhere(['<>', 'role', $this->role]);
}
Another way pass other parameter like but problem in filter time:
$dataProvider = $searchModel->search(Yii::$app->request->queryParams+['EmployeeSearch' => ['<>', 'role' =>'regular']]);
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.
You can do it this way in the Controller
$searchModel = new ModelSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->query->andWhere(['lang'=>'ENG']);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With