Количество товаров в пагинации

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Количество товаров в пагинации

Сообщение girmate »

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

$products = Product::find()
        ->where('in', 'id', [1, 2, 3, 4, 5, 6, 7, 8, 11, 19, 14, 20]);
и стандартно:

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

$pagination = new Pagination([
        'defaultPageSize' => 10,
        'totalCount' => $products->count(),
    ]);

    $products = $products->offset($pagination->offset)
        ->limit($pagination->limit)
        ->all(); 
выводит ошибку:

Invalid argument supplied for foreach()

и подчеркивает строку в коде:

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

 'totalCount' => $products->count(), 

Я хочу выбрать товары, и показать их с пагинацией. Что я делаю не так?

А если поменяют запрос на:

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

$products = Product::findAll([1, 2, 3, 4, 5, 6, 7, 8, 11, 19, 14, 20]); 
то получаю ошибку:

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

Call to a member function count() on a non-object
Последний раз редактировалось girmate 2016.02.20, 17:17, всего редактировалось 3 раза.
Осторожно! Вы общаетесь с новичком ;)
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: Количество товаров в пагинации

Сообщение andrei.obuhovski »

квадратные скобки в where пропущены
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Количество товаров в пагинации

Сообщение girmate »

andrei.obuhovski писал(а):квадратные скобки в where пропущены
Верно! Спасибо!
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Количество товаров в пагинации

Сообщение girmate »

andrei.obuhovski писал(а):квадратные скобки в where пропущены
А Вы, часом, не знаете почему в таком случае

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

$products = Product::findAll([1, 2, 3, 4, 5, 6, 7, 8, 11, 19, 14, 20]); 
выдает ошибку Call to a member function count() on a non-object в блоке пагинации? Почему это не работает?


В чем разница вот с этим:

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

$products = Product::find()->where(['in', 'id', [1, 2, 3, 4, 5, 6, 7, 8, 11, 19, 14, 20]]);
это работает. Почему в первом случае не объект? Как в таком случае получить количество товаров, которые возвращаются во втором случае?
Последний раз редактировалось girmate 2016.02.20, 18:41, всего редактировалось 3 раза.
Осторожно! Вы общаетесь с новичком ;)
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: Количество товаров в пагинации

Сообщение andrei.obuhovski »

В первом случае возвращается массив, а во втором объект ActiveQuery
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Количество товаров в пагинации

Сообщение girmate »

andrei.obuhovski писал(а):В первом случае возвращается массив, а во втором объект ActiveQuery
Массив чего? Продуктов? А как узнать количество? Как сделать пагинацию?
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Количество товаров в пагинации

Сообщение ElisDN »

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

$count = Product::find()->where(['in' => [1, 2, 3, 4, 5, 6, 7, 8, 11, 19, 14, 20]])->count(); 
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Количество товаров в пагинации

Сообщение girmate »

ElisDN писал(а):

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

$count = Product::find()->where(['in' => [1, 2, 3, 4, 5, 6, 7, 8, 11, 19, 14, 20]])->count();
Не пробовал, но должно заработать. С самими запросами в SQL у меня проблем нет. А вот как начну переводить это для ActiveRecord - могу простую задачу решать два дня((

Спасибо!
Осторожно! Вы общаетесь с новичком ;)
Закрыто