@EVOSandru6

Почему в YII2 ломается dataProvider?

Добрый день.

Не понимаю в чем причина. Гуглил много, честно.

Есть такй код:

$className = $this->className;
        $query = $className::find();
        $query->andWhere([
            $this->attribute=>$this->model->id
        ]);

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => 2,
            ],
            'sort' => [
                'defaultOrder' => [
                    'id' => SORT_DESC,
                    'name' => SORT_ASC,
                ]
            ],
        ]);


Далее убеждаюсь, что в провайдере записи есть:

echo $dataProvider->getTotalCount(). '<br/>'; // 3

Далее кидаю это $dataProvider в ListView:

echo ListView::widget([
                'dataProvider' => $dataProvider,
                'itemView' => '_list_item',
                'options'=> [
                    'id'=>'comments-list',
                ],
                'itemOptions' => [
                    'class' => 'comments-item'
                ],
            ]);


И ловлю такую ошибку:


PHP Warning – yii\base\ErrorException
Invalid argument supplied for foreach()


В чем может быть дело?
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
@EVOSandru6 Автор вопроса
Спасибо за отклики, выяснил, что ошибка в части:

'defaultOrder' => [
                    'id' => SORT_DESC,
                    // 'name' => SORT_ASC,
                ]


Поля name нет в таблице. Странно, что об этом в дебаге не говорилось. Буду знать теперь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
А если Вы поменяете так свой код?
$query = self::find(); // или напрямую подставьте модель
        $query->where([
            $this->attribute=>$this->model->id
        ]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы