Spu*_*ous 9 search model dataprovider conditional-statements yii2
我期待为控制器中的单个动作设置条件,所以我不想改变我的search模型.
我的代码看起来像这样:
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,
]);
}
Run Code Online (Sandbox Code Playgroud)
通知行显示我的条件($searchModel->query()->where('role <> regular');),它非常简单,但我没有找到一个在线工作的解决方案.
作为参考,我试过这些:
Spu*_*ous 12
好的,我完成了它,它以这种方式为我工作:
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,
]);
}
Run Code Online (Sandbox Code Playgroud)
当然有点复杂并且在模型中做它可能会更好,但我只希望它在这个动作中使用它并且具有相同search模型但不同条件的一堆其他动作.
你可以在Controller中这样做
$searchModel = new ModelSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->query->andWhere(['lang'=>'ENG']);
Run Code Online (Sandbox Code Playgroud)
你可以尝试这个方法
$searchModel = new EmployeeSearch();
$searchModel->role = 'regular';
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
Run Code Online (Sandbox Code Playgroud)
在搜索模型中:
$query->andFilterWhere(['<>', 'role', $this->role]);
Run Code Online (Sandbox Code Playgroud)
第二种方式传递第二个参数,例如:
$dataProvider = $searchModel->search(Yii::$app->request->queryParams, $role = 'regular');
Run Code Online (Sandbox Code Playgroud)
在搜索模型中
if($role == 'regular') {
$query->andWhere(['<>', 'role', $this->role]);
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是传递其他参数,但过滤时间存在问题:
$dataProvider = $searchModel->search(Yii::$app->request->queryParams+['EmployeeSearch' => ['<>', 'role' =>'regular']]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20805 次 |
| 最近记录: |