Работа с массивами

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

Работа с массивами

Сообщение Adigezalov »

Добрый день.
Подскажите, пожалуйста, как мне быть в таком случае.

У меня есть Model, в которой генерируется массив на 100 строк:

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

class Elem extends Model
{
    public $id;
    public $title;

    public static $elem= [];

    public static function ElemFilling()
    {
        for ($i = 0; $i < 100; $i++) {
            $task[$j] = [
                'id' => $i+1,
                'title' => 'Задача ' . ($i+1)
            ];
        }

        return $elem;
    }

}
Далее этот массив попадает у меня в action Controller:

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

public function actionIndex()
    {
        $task = Elem::ElemFilling();
        return $this->render('index', compact('elem'));
    }
Далее это все идет во view и там выводится в виде таблицы на 100 строк.

Собственно вопрос как работать с таким массивом? Ведь я в контроллере не могу выполнять функции where, all, orderby и тд...
Нужно сделать пагинацию, чтобы разом не выводить 100 записей, а вывести по 5.

P.S. как это работает в случае с подключенной базой данных я знаю, интересует именно работа без нее.
Последний раз редактировалось Adigezalov 2017.12.14, 17:54, всего редактировалось 1 раз.
Adigezalov
Сообщения: 51
Зарегистрирован: 2017.10.14, 23:52

Re: Работа с массивами

Сообщение Adigezalov »

С этим я разобрался, но, как я понимаю, они все равно все берут данные из базы, а в моем случае что-то не то с моделью? Или не так?
Adigezalov
Сообщения: 51
Зарегистрирован: 2017.10.14, 23:52

Re: Работа с массивами

Сообщение Adigezalov »

Если я хочу создать свою таблицу, а не GridView, то для пагинации мне нужно прописать

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

 $task = $query->offset($pages->offset)->limit($pages->limit)->all();
И соответственно получаю ошибку

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

Call to a member function offset() on array
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Работа с массивами

Сообщение caHek2x »

у вас в переменной $query массив ... а фции offset/limit/all относятся к query/activequery
Adigezalov
Сообщения: 51
Зарегистрирован: 2017.10.14, 23:52

Re: Работа с массивами

Сообщение Adigezalov »

caHek2x писал(а): 2017.12.14, 19:43 у вас в переменной $query массив ... а фции offset/limit/all относятся к query/activequery
подскажите, пожалуйста, что мне в этой ситуации делать?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Работа с массивами

Сообщение zelenin »

Adigezalov писал(а): 2017.12.14, 19:51
caHek2x писал(а): 2017.12.14, 19:43 у вас в переменной $query массив ... а фции offset/limit/all относятся к query/activequery
подскажите, пожалуйста, что мне в этой ситуации делать?
ручками сортировать, разбивать на страницы итд.
Adigezalov
Сообщения: 51
Зарегистрирован: 2017.10.14, 23:52

Re: Работа с массивами

Сообщение Adigezalov »

zelenin писал(а): 2017.12.14, 19:55
Adigezalov писал(а): 2017.12.14, 19:51
caHek2x писал(а): 2017.12.14, 19:43 у вас в переменной $query массив ... а фции offset/limit/all относятся к query/activequery
подскажите, пожалуйста, что мне в этой ситуации делать?
ручками сортировать, разбивать на страницы итд.
Печально
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Работа с массивами

Сообщение caHek2x »

что печально ? применить usort ? или взять часть массива ? или посчитать зная сколько элементов в массиве сколько будет страниц ? ну как многие любят писать "поищите готовое решение" хотя это задача наоборот для себя немного хотябы размять мозги а если не умеете то повод получить новые навыки ...
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Работа с массивами

Сообщение ElisDN »

Использовать ArrayDataProvider.
Ответить