我目前在Laravel中尝试更新视频模型的'video_metadata'
列时遇到了一个问题。我尝试了两种不同的方法,但似乎只有第一种方法有效。
以下是我尝试过的两种方法:
1.工作方法:
Video::where('id', $this->video->getKey())->update([
'video_metadata->author_id' => 2
]);
2.不起作用的方法:
$this->video->update([
'video_metadata->author_id' => 2
]);
我很困惑为什么第二种方法不起作用。这两种方法在我看来都很相似,但只有第一种方法成功地更新了'video_metadata'
列。有人能解释一下为什么第二种方法不起作用并提出解决方案吗?谢谢你!
1条答案
按热度按时间c2e8gylq1#
第一种方法使用Query Builder更新数据库。这不会调用像
events
或mutators
这样的Eloquent模型示例。它根据指定的条件直接修改数据库。(WHERE id = 'xyz'
)但是第二种方法使用Eloquent模型示例来更新数据库,这意味着它触发
events
并使用mutators
。但是问题是***第二种方法不能直接更新JSON列***
您可以尝试的解决方案有
或