Laravel雄辩的Json列更新不起作用
我正在使用PHP7和MySQL 5.7。属性字段在我的表中定义为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,
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);