我使用的是 Laravel 10。
我通过以下方式利用 JSON 列的转换:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
protected $casts = [
'meta' => 'collection', // here
];
}
例如,当尝试直接更新集合中的值时:
$model->meta->put('test', 100);
$model->save();
没有任何反应。
当我按原样分配变量时,它可以正常运行。
$model->meta = ['test' => 100]; $model->save();
但是,如果我只需要更新/添加单个元素怎么办?
我发现了以下解决方法,但这是否是预期的行为?
$meta = $model->meta;
$meta->put('test', 100);
$model->meta = $meta;
$model->save();
在这种情况下,似乎只有直接赋值才有效,并且强制转换集合似乎不支持其任何写入功能。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
尝试将其转换为集合
AsCollection