yii2 - 将搜索添加到自定义查询 Yii2
问题描述
我构建了一个自定义查询来对一些字段进行计数和求和,然后使用 gridview 来显示数据。
这是我的查询:
$query2 = (new \yii\db\Query())
->select([
'date',
'sum( IF(status = "Passed", 1, 0) ) AS passed',
'sum( IF(status = "Failed", 1, 0) ) AS failed',
'sum( IF(status = "On Hold", 1, 0) ) AS onhold',
'sum( IF(status <> "NULL", 1, 0) ) AS total'
])
->from('qa3d')->where(['week'=>$week])
->groupBy('date');
$dataProvider2 = new ActiveDataProvider([
'query' => $query2,
]);
还有我的网格视图:
<?= GridView::widget([
'dataProvider' => $dataProvider2,
// 'filterModel' => $searchModel,
'headerRowOptions' => ['class' => 'kartik-sheet-style'],
'filterRowOptions' => ['class' => 'kartik-sheet-style'],
'panel' => [
'type' => GridView::TYPE_PRIMARY,
'heading' => 'Status Report by Analyst - Week to Date',
],
'toolbar' => [
'{toggleData}',
],
'pjax' => true,
'columns' => [
'date',
'passed',
'failed',
[
'attribute' => 'onhold',
'label' => "On Hold",
],
'total',
],
]); ?>
我注释掉了,filterModel
因为它不起作用。如何像 Gii CRUD 生成器那样为这个自定义查询构建搜索?
请帮我解决一下这个。
谢谢!
解决方案
是的,你有。您必须创建指向该页面操作的搜索表单,然后您必须决定如何转发参数。您可以将其放入搜索模型或获取它并传递给您的查询。这取决于您的查询在哪里。
$searchModel = new SomeSearchModel();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
或者像这样然后访问数组元素。
$post = Yii::$app->request->queryParams;
在你的情况下,我想你会搜索$week = $post['week'];
推荐阅读
- android - 在 Android 中删除和添加视图而不会丢失其属性
- python - Pandas 如何根据其他列有条件地拆分列?
- webrtc - Torrent P2P 共享和 WebRTC P2P 共享之间的区别?
- python - re.search() 和 re.findall() 挂起
- amazon-web-services - 将现有根卷附加到 ec2 现货实例
- excel - 更改不同工作簿的单元格
- angular - 在 Angular typings.d.ts 中定义多个模块的问题
- db2 - SQL CASE 表达式给出计算错误信息
- java - 尽管存在“数据库名称”,但出现错误“致命:数据库“数据库名称”不存在”
- mysql - 以动态方式构建数据库是否可行且是一种好方法?