@romicohen
Есть ли в Laravel какие-то готовые механизмы для этого в контексте MySQL, без использования полей типа json?
Грубо говоря: чтобы добавить поле в таблицу, новое свойство в класс модели, и так далее.
Решения вопроса 1
@lavren
3
комментария
Ответы на вопрос 2
@solotony
DB::statement( .... );
но вот вся магия laravel конечно будет недоступна,
я таким образом делал движок для магазина с настраиваемыми полями
@AmdY
Добавление и прочие изменения можно подсмотреть в миграциях, есть готовый компонент IlluminateDatabaseSchemaBuilder
После этого поле ничем не отличается от остальных. Это не Doctrine, где поля надо явно прописывать.
Вторая задача это работа админки, она никак не связана с путём появления поля в модели. Та же простейшая динамическая сортировка или фильтрация делается в лоб.
Допустим в урле приходит
?filterBy=fieldName&filterValue=value&filteOperation=%3D
в контроллере
$model->where($request->get(‘filterBy’), urldecode($request->get(‘filterOperation’)), $request->get(‘filterValue’));
И не важно как вы добавили колонку и есть ли она вообще в базе, Eloquent не проверяет этого.
Но не забывайте про безопасность.