Задать вопрос
@romicohen
Системный Архитектор

Есть ли в Laravel какие-то методы для динамического добавления полей в модель/сущность на основе MySQL?

Существует потребность из админки добавлять и удалять поля модели/сущности (например: чтобы админ сайта мог добавить пользователям поле в профайл и организовать по ним фильтрацию).

Есть ли в Laravel какие-то готовые механизмы для этого в контексте MySQL, без использования полей типа json?

Грубо говоря: чтобы добавить поле в таблицу, новое свойство в класс модели, и так далее.
  • Вопрос задан
  • 544 просмотра
Подписаться 3 Простой 2 комментария
Решения вопроса 2
AmdY
@AmdY
PHP и прочие вебштучки
Вы придумали проблему там где её нет, потому что объединили две несвязанные задачи.
Добавление и прочие изменения можно подсмотреть в миграциях, есть готовый компонент \Illuminate\Database\Schema\Builder
После этого поле ничем не отличается от остальных. Это не Doctrine, где поля надо явно прописывать.

Вторая задача это работа админки, она никак не связана с путём появления поля в модели. Та же простейшая динамическая сортировка или фильтрация делается в лоб.
Допустим в урле приходит
?filterBy=fieldName&filterValue=value&filteOperation=%3D
в контроллере
$model->where($request->get('filterBy'), urldecode($request->get('filterOperation')), $request->get('filterValue'));
И не важно как вы добавили колонку и есть ли она вообще в базе, Eloquent не проверяет этого.
Но не забывайте про безопасность.
Ответ написан
pLavrenov
@pLavrenov
Разработка сайтов
Может лучше использовать META поля. Как-бы добавил поле и есть, не добавил и нет. Описанный способ мазохизм. Мета поля можно добавлять в модель при выводе и итог будет такой как надо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
менять базу данных - пожалуйста DB::statement( .... );
но вот вся магия laravel конечно будет недоступна,

я таким образом делал движок для магазина с настраиваемыми полями
Ответ написан
Ваш ответ на вопрос

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

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