И так, допустим у нас есть база данных postrges. И нам нужно сохранить контакты в виде json.

 

Пример данных

"contacts": {
    "email": [
        "test@mail.ru",
        "test3@mail.ru"
    ],
    "phone": [
        "+79098201000",
        "+79998201000"
    ]
}

Создаем поле

$table->json('contacts');

 

Так как реквест в нашем контроллере приходит в виде массива (array != json), данные в поле не пройдут валидацию. Для того что-бы все было ровно, нужно изменить тип валидации поля на массив и добавить кастомный каст этому полю.

 

Валидируем как массив

'contacts' => ['array']

 

Добавляем кастомный каст в модель

protected $casts = [
    'contacts' => 'array',
];