批量更新Laravel中has-many关系中的表

时间:2017-11-19 03:57:19

标签: laravel laravel-5 laravel-5.4

我在频道和视频表之间有一个One to Many relationship。两个表都有visibility字段。当我更新频道的可见性时,我希望使用频道的可见性值更新属于该频道的所有视频的可见性。

如何在Laravel 5.4中实现此批量更新功能?

3 个答案:

答案 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,
]);