Как получать конкретную запись связанной таблицы по полю в Laravel?

59e510ef08a14817517889.jpeg
или ссылка на скрин
1. Модель Page имеет appends - это вывод дополнительных полей для страниц
2. Таблица pages
3. Таблица fields, где advanced_name - строка с уникальным именем дополнительного поля и advanced_type - тип этого поля
4. Таблица переводов для fields.
5. Вывод дополнительных полей для страницы.

Вопрос:
Как можно избавится от такого явного указания дополнительных полей в модели, т.е. или уйти от appends или сделать добавление этих атрибутов к модели динамическим?
Или
Каждый экземпляр Page будет иметь свои fields. Т.е. свою коллекцию дополнительных атрибутов.
Как можно получать их напрямую по полю advanced_name?

Надеюсь выразил доходчиво суть своей проблемы.
У каждой страницы может быть неограниченное кол-во доп. полей. Перечислять все их в модели как appends тупо. Ищу универсальное решение.
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
AmdY
@AmdY
PHP и прочие вебштучки
1. Appends тебе однозначно не надо, сноси всё.
2.1 Если они привязаны к конкретной page (как сейчас это и есть судя по page_id), то эти поля попадают в релейшин уже описанный в fileds. Достать ты их можешь $page->fileds отфильтровав по advenced_name
например $page->fileds->byKey('advenced_name')['about-text-1']
2.2 Если поля общие, то имеет смысл достать их все за раз и и заинджектить их в модель или использовать как отдельную модель раз она никак не связана. А то у тебя сейчас таскается на каждое поле запросом из базы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы