Как получить (и надо ли) коллекцию Laravel в виде объекта?
Вопрос простейший. Но забыл( решил переписать старый проект.
В таблице хранится следующим образом
uid, title, rus, value
Это я года 4 назад делал простую самописную админку для одностраничника.
Соответственно там значения а-ля
1 'header' 'Заголовок' 'Компания ...'
2 'teaser' 'Текст под заголовком' 'Наша компания'
и т.д.
Думал по быстрому переписать на Laravel и сходу застрял(
давно уже не обращался к данным по ключу в массиве.
А там у меня все собиралось в $data. $data['mainpage']['header'] $data['services'] из другой таблицы и т.д.
Соответственно делаю, $mainpage = MainPage::pluck('value','title');
Получаю массив. И выводить только $mainpage['header']. Бесит). Привык $mainpage->header и т.д.
Собвственно 2 вопроса.
1) Как перевести коллекцию, чтобы я мог по свойству обращаться. Через foreach переборку?
2) Как такую "беду" оптимизировать?) Именно, что касается контента одностраничников. Я использую пакет для хранения настроек своих проектов, который в принципе и основан на хранении ключ-значение.
Ну сделай так, чтобы плюкалось не валью с титле, а PageEntity какой-нибудь, который будет моделью или просто классом сущности. И там уже будешь юзать $mainpage->header.
дык я вроде и сделал модель MainPage
из целого protected $table='mainpage'
Но не разворачивать же таблицу? в смысле делать поле под каждый чих? эдак 20-30 полей будет.
все равно те же рога получаются. Сам PageEntity, то нормальный класс.
Но я то получаю коллекцию itemов... и это массив. Если делать в цикле, то и вопросов нет.
В общем видимо я не так уж и не прав был 4 года назад) массив наше все
Виталий Юшкевич
все так. Коллекцию не я создаю, а Laravel по умолчанию отдает коллекцию в виде массива.
Я собственно так и сделал - через пустой объект PageEntity
dk-web, если я правильно понял, то ты из ларавел получаешь коллекцию. У каждого объекта у тебя есть 2 свойства, по которым ты строишь массив ключ—значение, только обрамляешь ещё значение через обертку класса PageEntity. В этой схеме (про много телодвижений и ее сложность я не говорю) тебе не нравится, что доступ к данным у тебя идёт как к элементам массива, а ты хочешь доступ в объектном стиле.
Решение json_decode(json_encode($mainpage)) решает твою задачу? Или ты другое ожидаешь и я не верно понял, что ты хочешь получить в итоге?