Laravel雄辩的Json列更新不起作用

Laravel雄辩的Json列更新不起作用,json,laravel,eloquent,Json,Laravel,Eloquent,我正在使用PHP7和MySQL 5.7。属性字段在我的表中定义为json列 我在模型文件中定义了强制转换 protected $casts = ['attributes' => 'array']; 我在添加数据方面没有任何问题 Transaction::create([ 'name' => $this->name, 'subject_id' => $this->id,

我正在使用PHP7和MySQL 5.7。属性字段在我的表中定义为json列

我在模型文件中定义了强制转换

protected $casts = ['attributes' => 'array'];
我在添加数据方面没有任何问题

Transaction::create([

            'name'          => $this->name,
            'subject_id'    => $this->id,
            'subject_type'  => get_class($this),
            'attributes'    => ['status' => 0, 'type' => 'owner'],
            'user_id'       => $owner->id

        ]);
但是我不能更新json数据。我尝试了以下方法:

$transaction = $this->transaction->where('content_key', $this->request->key)->first(); $transaction->update(['attributes->status' => 1]);

没用

这些方法有效:

$transaction->update(['attributes'=> ['status' => 1, 'type' => 'owner'] ]);
(我需要更新此方法中的所有数据)


我怎样才能做到这一点呢?

因此,在经历了与您相同的问题后,我花了一天时间来弄清楚引擎盖下发生了什么。试试这个尺码:

$transaction->setAttribute ('attributes->status', 1);

如果你问我,Laravel的文档严重缺乏关于这个主题的详细信息!(但我想这只是Laravel的一个标准功能)。

您是否尝试过$transaction->status=['status'=>0',键入'=>'owner']$事务->保存()?我也有同样的问题。我使用的是PostgreSQL数据库,但原理是一样的。它为什么不起作用真的很令人沮丧。你找到解决办法了吗?
Db::table('transactions')->where('content_key', $this->request->key)->update(['attributes->status' => '1'])
$transaction->setAttribute ('attributes->status', 1);