How to define and use JSON data type in Eloquent?
According to Laravel documentation, 'json' is not one of the casting available types. https://laravel.com/docs/5.1/eloquent-mutators
You should use 'array' instead:
class SomeModel extends Model
{
protected $casts = [
'field_name' => 'array'
];
}
For Object to JSON casting
class YourModel extends Model
{
protected $casts = [
'table_column_name' => 'object'
];
}
For Array to JSON casting
class YourModel extends Model
{
protected $casts = [
'table_column_name' => 'array'
];
}
In your migrations you can do something like:
$table->json('field_name');
And in your model you add the field to the $casts
property to instruct Eloquent to deserialize it from JSON into a PHP array:
class SomeModel extends Model
{
protected $casts = [
'field_name' => 'array'
];
}
Source: https://laravel.com/docs/5.1/eloquent-mutators#attribute-casting
Note: This is also relevant answer for Laravel 5.6