Yii2: добавить сборщик данных для gridview - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть выходной код для определенных данных из связанных таблиц.но у меня также есть задача добавить 2 поля поиска по дате.

Должно быть 2 поля created_at и end_at, выбирающих дату, в которую я смогу отфильтровать дополнительные данные

мой контроллер:

{
    $dateNowMinusMonth = new \DateTime('-1 month');
    $payed = OrderPayment::find()->where(['status' => OrderPayment::STATUS_PAYED])
        ->andWhere(['>=', 'created_at', $dateNowMinusMonth->format('Y-m-d H:i:s')])
        ->all();
    $orderIds = ArrayHelper::getColumn($payed, 'order_id');
    $elements = [];
    if ($orders = Order::find()->where(['id' => $orderIds])->all()) {
        foreach ($orders as $order) {
            foreach ($order->elements as $element) {
                $product = $element->product;
                if (array_key_exists($product->id, $elements)) {
                    $elements[$product->id]['count'] += 1;
                } else {
                    $elements[$product->id] = [
                        'name' => $product->name,
                        'barcode' => $product->barcode,
                        'count' => 0,
                        'amount' => $product->storitem->amount,
                        'item_cost' => $product->purchase->item_cost,
                        'price' => $product->price,
                    ];
                }
            }
        }
    }
    $dataProvider = new ArrayDataProvider([
        'allModels' => $elements,
        'sort' => [
            'defaultOrder' => ['count' => SORT_DESC],
            'attributes' => ['name', 'count', 'barcode', 'amount', 'item_cost', 'price']
        ],
        'pagination' => [
            'pageSize' => 15,
        ],
    ]);
    return $this->render('Reporat', [
        'dataProvider' => $dataProvider,
    ]);
}

и просмотр:

<?= GridView::widget([
'id' => 'search-table',
'dataProvider' => $dataProvider,
'striped' => false,
'options' => ['class' => 'text-center'],
'columns' => [
    'name',
    'barcode',
    'item_cost',
    'price',
    'count',
    'amount'
],
]); ?>

Пожалуйста, помогите мне добавить 2 поля, по которым я смогу отфильтровать отображаемые данные по дате создания и окончаниядата.

...