Get per (брать по несколько)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
alez
Сообщения: 9
Зарегистрирован: 2014.10.23, 21:11

Get per (брать по несколько)

Сообщение alez »

Часто встречается ситуация когда нужно выводить записи рядами (товары по три в строку например).
Есть ли встроенный в Yii2 способ это делать? Может быть какой нибудь хак или воркэраунд?

Я хочу например выводить по три в ряд:
было:
[
'первая запись',
'вторая запись',
'третья запись',
'четвёртая запись',
]
стало:
[
0 => [
'первая запись',
'вторая запись',
'третья запись',
],
1 => [
'четвёртая запись',
]
]
notgosu
Сообщения: 124
Зарегистрирован: 2012.05.22, 17:46

Re: Get per (брать по несколько)

Сообщение notgosu »

http://www.yiiframework.com/doc-2.0/gui ... in-batches
вам нужно использовать batch(3)
Аватара пользователя
Insolita
Сообщения: 788
Зарегистрирован: 2011.06.06, 01:39
Контактная информация:

Re: Get per (брать по несколько)

Сообщение Insolita »

Из коробки нет но вы можете сделать виджет который будет выводить как вам угодно
https://www.google.ru/search?q=php+выво ... ко+колонок
notgosu писал(а):http://www.yiiframework.com/doc-2.0/gui ... in-batches
вам нужно использовать batch(3)
ну как вариант можно что-то типа такого попробовать...

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

$res='';
foreach (Model::find()->batch(3) as $models) {
    $res.=$this->renderPartials('_row3x',['models'=>$models]);  // или  в массив нужный формировать...
} 
alez
Сообщения: 9
Зарегистрирован: 2014.10.23, 21:11

Re: Get per (брать по несколько)

Сообщение alez »

notgosu писал(а):http://www.yiiframework.com/doc-2.0/gui ... in-batches
вам нужно использовать batch(3)
О, а я думал оно запросами будет спамить в БД.
Единственный минус оно спамит в связанные таблицы, то есть

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

<? foreach (Certificates::find()->joinWith('photo')->batch(2) as $certificatesRow): ?>
на каждые 2 элемента уходит 1 запрос в таблицу с фотками.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Get per (брать по несколько)

Сообщение anton44eg »

лучше выбирать 1 запросом и разбивать чем-то типа http://php.net/manual/en/function.array-chunk.php
alez
Сообщения: 9
Зарегистрирован: 2014.10.23, 21:11

Re: Get per (брать по несколько)

Сообщение alez »

Всем спасибо.
anton44eg писал(а):лучше выбирать 1 запросом и разбивать чем-то типа http://php.net/manual/en/function.array-chunk.php
Идеально.
Ответить