AR getModels() и select [Решено]

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
grig
Сообщения: 41
Зарегистрирован: 2014.12.21, 23:42

Re: AR getModels() и select

Сообщение grig »

А при чем здесь грид? С чего вы взяли, что для этой задачи используется grid? Или у меня в коде он есть?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: AR getModels() и select

Сообщение zelenin »

grig писал(а):А при чем здесь грид? С чего вы взяли, что для этой задачи используется grid? Или у меня в коде он есть?
Доброго дня! Разбираясь и модифицируя чужой код наткнулся на одну интересную вещь. Мой коллега для вывода ListView и GridView использовал dataprovider, который описывается так:
grig
Сообщения: 41
Зарегистрирован: 2014.12.21, 23:42

Re: AR getModels() и select

Сообщение grig »

После этого я привел здоровенный пост, в котором привел пример как падает скрипт на getModels() без грида.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: AR getModels() и select

Сообщение zelenin »

grig писал(а):После этого я привел здоровенный пост, в котором привел пример как падает скрипт на getModels() без грида.
с этим уже разобрались, как мне кажется - вам следует самому считать общий тотал
grig
Сообщения: 41
Зарегистрирован: 2014.12.21, 23:42

Re: AR getModels() и select

Сообщение grig »

zelenin писал(а):
grig писал(а):После этого я привел здоровенный пост, в котором привел пример как падает скрипт на getModels() без грида.
с этим уже разобрались, как мне кажется - вам следует самому считать общий тотал
Это я понял. Как посчитать количество через $query->count() в условиях данной задачи я так и не понял, выбивает ошибку. А как посчитать по другому я пока не нашел. Буду благодарен если поделитесь примером кода, опираясь на мой пост с примером, как бы вы считали общий тотал.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: AR getModels() и select

Сообщение zelenin »

давайте начнем с того, что во вьюху вы не передаете датапровайдер, а передаете уже готовый массив объектов. Передавайте провайдер, а массив получайте непосредственно в месте вывода (в foreach).

Код: Выделить всё

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$pagination = $dataProvider->getPagination();
$pagination->setTotalCount(count($dataProvider->query->asArray()->all()));
$dataProvider->setPagination($pagination);
непроверенный код. если будут ошибки, пишите.
grig
Сообщения: 41
Зарегистрирован: 2014.12.21, 23:42

Re: AR getModels() и select

Сообщение grig »

На первой строке падает. С той же самой ошибкой, про отсутствие age.
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: AR getModels() и select

Сообщение Demon_id »

Код: Выделить всё

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->totalCount  = count($dataProvider->query->asArray()->all()); 
grig
Сообщения: 41
Зарегистрирован: 2014.12.21, 23:42

Re: AR getModels() и select

Сообщение grig »

Вот тут работает. По коду товарища zelenin я соврал. Он вылетает на третьей строке (setTotalCount не известен). Спасибо вам всем огромное.
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: AR getModels() и select [Решено]

Сообщение Demon_id »

вот только

Код: Выделить всё

count($dataProvider->query->asArray()->all()) 
напряжная штуковина. я бы написал count запрос отдельно с учётом heving.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: AR getModels() и select [Решено]

Сообщение zelenin »

Demon_id писал(а):вот только

Код: Выделить всё

count($dataProvider->query->asArray()->all())
напряжная штуковина. я бы написал count запрос отдельно с учётом heving.
согласен
Ответить