Как определить и использовать тип данных JSON в Eloquent?

Как определить тип данных JSON который pgsql 9.4 в pgsql 9.4 в Laravel 5?

Мне нужно определить тип данных, сохранить и извлечь данные и до сих пор не удалось найти способ справиться с этим в Laravel 5.1

Ответ 1

В ваших миграциях вы можете сделать что-то вроде:

$table->json('field_name');

И в вашей модели вы добавляете поле в свойство $casts чтобы инструктировать Eloquent десериализовать его из JSON в массив PHP:

class SomeModel extends Model
{
    protected $casts = [
        'field_name' => 'array'
    ];
}

Источник: https://laravel.com/docs/5.1/eloquent-mutators#attribute-casting

Примечание. Это также важный ответ для Laravel 5.6

Ответ 2

Согласно документации Laravel, "json" не является одним из доступных типов литья. https://laravel.com/docs/5.1/eloquent-mutators

Вместо этого вы должны использовать "массив":

class SomeModel extends Model
    {
        protected $casts = [
            'field_name' => 'array'
        ];
    }