Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 02.05.2018 14:37:57

Наследование коллекций

Добрый день!

Есть необходимость создать модель из массива, т.е. данные статичны и хранить их в бд бессмысленно.
Но нужны методы поиска, сортировки и т.д. по массиву данных, для этих нужд я обратился к коллекциям.

Есть например мой массив данных MyCollection, я наследую его от Illuminate\Support\Collection
Выглядит это примерно так:

class MyCollection extends Collection
{
    $protected $items = [
        ['id' => 1],
        ['id' => 2],
    ];

    public function __construct() {}
}

Создаю экземпляр и обращаюсь к методам, но сортировка, отбор и т.д. не работают
Например, это работает:

(new MyCollection)->all();

А это нет:

(new MyCollection)->where('id', 1);

Сломал уже голову, помогите пожалуйста.

Изменено Hardoff (02.05.2018 14:39:08)

Не в сети

#2 02.05.2018 15:02:56

Re: Наследование коллекций

Только написал и до меня дошло smile
В Collection используется позднее статическое связывание, чтобы моя коллекция заработала нужен костыль типа:

    public function __construct($items = null)
    {
        if ($items !== null)
            parent::__construct($items);
    }

Может у кого нибудь будет лучше идея, как использовать коллекции, поделитесь плз

Не в сети

Подвал раздела