Колонка JSON в миграциях Laravel
Иногда в одной колонке нужно хранить
структурированные данные: настройки
виджета, список тегов, параметры
формы. Для этого подходит метод
json:
<?php
$table->json('options');
?>
В базе поле хранит текст в формате JSON. Laravel при работе с моделями Eloquent может автоматически преобразовывать его в массив PHP и обратно.
Пример миграции таблицы пользователей с настройками:
<?php
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->json('settings');
$table->timestamps();
});
}
?>
В settings можно хранить,
например, тему оформления и язык:
{"theme":"dark","lang":"ru"}.
Не стоит складывать в JSON то,
что логичнее вынести в отдельные
колонки - имя, email, цена.
Добавьте в таблицу поле
settings типа JSON.
Приведите пример данных, которые удобно хранить в JSON.