我在频道和视频表之间有一个One to Many relationship
。两个表都有visibility
字段。当我更新频道的可见性时,我希望使用频道的可见性值更新属于该频道的所有视频的可见性。
如何在Laravel 5.4中实现此批量更新功能?
答案 0 :(得分:3)
您可以在该模型上收听“已更新”事件。检查“可见性”字段是否已更改,如果是,则运行查询以立即更新所有相关记录。
$channel->videos()->update(['visibility' => true]);
一种可能性。这不会触发那些Video
模型的任何事件,因为它实际上没有检索它们,它只是直接在数据库上发布更新。
答案 1 :(得分:0)
你必须手动更新所有记录
$videos = App\Channel::find(1)->videos;
foreach ($videos as $video) {
$video->visible = false // or true whatever happened on Channel
$video->save()
}
答案 2 :(得分:0)
试过这个,它就像一个魅力
$channel->videos()->update([
'visibility' => $channel->visibility,
]);