Результат должен выводиться через GridView
Но одну из переменных не понимаю как передать.
Код:
В моделе сделал геттер:
Код: Выделить всё
// Model
public function getRetail()
{
return ($this->id_client !=0)? Orders::find()->select('SUM(amount) as amount')->where(['id_route'=>$this->id, 'id_client'=>$this->id_client])->one()->amount:
Orders::find()->select('SUM(amount) as amount')->where(['id_route'=>$this->id])->one()->amount;
}
Код: Выделить всё
$model = new Number();
$model->date_to = date('Y-m-d');
$model->date_from = date('Y-m-d', strtotime("-3 month"));
$model->id_partner = 0;
if(Yii::$app->request->post()) $model->load(Yii::$app->request->post());
$dataProvider = new ActiveDataProvider([
'query' => Number::find()
->where(['ready'=>1])
->andWhere(['>=', 'route.date', $model->date_from])
->andWhere(['<=', 'route.date', $model->date_to])
->orderBy('route.date DESC'),
]);
return $this->render('view', [
'model' => $model,
'dataProvider' => $dataProvider,
]);
Код: Выделить всё
<?php $form = ActiveForm::begin(); ?>
<div class="form-group">
<?= DatePicker::widget([
'model' => $model,
'attribute' => 'date_from',
'attribute2' => 'date_to',
'type' => DatePicker::TYPE_RANGE,
'separator' => '-',
'pluginOptions' => ['format' => 'yyyy-mm-dd', 'autoclose'=>true]
]); ?>
<?= $form->field($model, 'id_client')->dropDownList(ArrayHelper::map(Client::find()->orderBy(['title' => SORT_ASC])->all(),'id','title')); ?>
</div>
<div class="form-group">
<?= Html::submitButton('Выбрать') ?>
</div>
<?php ActiveForm::end(); ?>
<div class="number-index">
<?= GridView::widget([
'dataProvider' => $dataProvider,
'layout' => "{items}\n{pager}",
'columns' => [
'number',
'date',
[
'attribute' => 'retail',
'filter' => false,
'value' => function ($data) {
return ($data->retail)? $data->retail: 0;
}
],
],
]); ?>
</div>
Не понимааю как передать в провайдер id_client