Давайте поддержим, у меня есть модель Post
, и я хочу сохранить дополнительные данные в формате JSON в таблице записей. В этом случае мы можем использовать свойство $casts
в Laravel. Что приведёт значение нашего поля к тому, что мы дали.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $table='posts';
protected $fillable = ['user_id', 'title', 'short_description', 'description', 'status', 'json_data'];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'json_data' => 'array',
];
}
Теперь мы хотим сохранить данные примерно так
$data = [
'user_id' => 1,
'title' => 'abc',
'short_description' => 'test',
'description' => 'test',
'status' => true,
'json_data' => [
'additional_info' => '',
'post_image' => '',
...
],
];
$item = new Post;
$item->fill($data)->save();
Это сохранит ваши значения массива json_data
в формате JSON в базе данных. Но когда вы получите данные из базы данных, они автоматически преобразуют их в массив.
Для справки прочитайте это