Добавить поиск в пользовательский запрос Yii2 - PullRequest
0 голосов
/ 28 января 2019

Я создаю пользовательский запрос для подсчета и суммирования некоторых полей, а затем использую 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:

<?= 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 для этого пользовательского запроса?

Пожалуйста, помогите мне с этим.

Спасибо!

1 Ответ

0 голосов
/ 28 января 2019

Да, у вас есть.Вы должны создать форму поиска, которая указывает на действие этой страницы, а затем вы должны решить, как вы будете пересылать параметры.Вы можете поместить его в поисковую модель или получить его и перейти к запросу, который у вас есть.Это зависит от того, где находится ваш запрос.

$searchModel = new SomeSearchModel();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

или как этот, а затем получить доступ к элементам массива.

$post = Yii::$app->request->queryParams;

В вашем случае я предположил, что вы будете искать $week = $post['week'];

...