@Silverviql

Как правильно организовать поиск по диапазону дат в yii2?

view.
<?php

/* @var $this yii\web\View */
/* @var $searchModel app\models\ZakazSearch */

use yii\helpers\Html;
use kartik\grid\GridView;
use yii\helpers\ArrayHelper;
use yii\data\ActiveDataProvider;
use frontend\models\NumberColumn;
use kartik\widgets\DateTimePicker;

$dataProvider = new ActiveDataProvider([
    'query' => \app\models\Zakaz::find()
        ->where('action <= 0') ->andWhere(['>=', 'date_close', '2018-08-01 00:00:00'])->
andWhere(['<=', 'date_close', '2018-09-17 00:00:00']),
    'pagination' => [
        'pageSize' => 10,
    ],
]);

?>

 <?php $date_yesterday = new DateTime('-1 day');

    echo GridView::widget([
        'dataProvider' => $dataProvider,
        'showFooter' => true,
        'filterModel'=>$searchModel,
        'showPageSummary'=>false,
        'pjax'=>true,
        'striped'=>true,
        'hover'=>true,
        'panel'=>['type'=>'primary', 'heading'=>$date_yesterday->format('d-M')],
        'columns' => [
            [
                'attribute' => 'date_close',
            ],
            [
                'attribute' => 'id_zakaz',
            ],
            [
                'attribute' => 'description',
            ],
            [
                'attribute' => 'fact_oplata',
            ],
            [
                'attribute' => 'id_shop',
                'value'=> function ($model) {
                    switch ($model->id_shop) {
                        case 2;
                            return 'Московский';
                        case 5;
                            return 'Админ';
                        case 6;
                            return 'Пушкина';
                        case 9;
                            return 'Сибирский';
                        case 12;
                            return 'Четаева';
                        case 16;
                            return 'Маркса';
                    }
                    return null;
                }
            ],
        ],
    ]);;?>


Я думаю добавить 2 поля DatePicker для выбора дат и так делать выборку по диапазону дат.
Правильно ли делать 2 переменные и в них сохранять даты. А потом передавать в поля andWhere
$dataProvider = new ActiveDataProvider([
    'query' => \app\models\Zakaz::find()
        ->where('action <= 0') ->andWhere(['>=', 'date_close', '2018-08-01 00:00:00'])
->andWhere(['<=', 'date_close', '2018-09-17 00:00:00']),
    'pagination' => [
        'pageSize' => 10,
    ],
]);

Или делать как в данном примере https://xn--d1acnqm.xn--j1amh/%D0%B7%D0%B0%D0%BF%D...
  • Вопрос задан
  • 567 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Я думаю добавить 2 поля DatePicker для выбора дат и так делать выборку по диапазону дат.

И что Вас останавливает?

Правильно ли делать 2 переменные и в них сохранять даты.

В чем вопрос? Можно ли в переменные писать данные, что бы потом их от туда получать? Можно, они по сути для этого и существуют
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы