2017-11-19 11 views
0

私はチャンネルとビデオテーブルの間にOne to Many relationshipを持っています。どちらの表にもvisibilityフィールドがあります。チャンネルの可視性を更新するとき、そのチャンネルに属するすべての動画の可視性をチャンネルの可視性値で更新したいと考えています。Lassvelでhas-many関係のテーブルを一括更新

Laravel 5.4でこの一括更新機能を実現するにはどうすればよいですか?

答えて

2

を更新する必要があります。 「可視性」フィールドが変更されている場合はチェックし、関連するすべてのレコードを一度に更新するクエリを実行します。

$channel->videos()->update(['visibility' => true]); 

1つの可能性。これは、実際にそれらを取得していないので、それらのVideoモデルのイベントを発生させず、DB上で直接更新を起動します。

0

手動でそれを行うあなたはそのモデルの「更新」のイベントをリッスンでき、すべてのレコード

$videos = App\Channel::find(1)->videos; 

    foreach ($videos as $video) { 
     $video->visible = false // or true whatever happened on Channel 
     $video->save() 
    } 
0

はこれを試み、それが魅力のように働いた

$channel->videos()->update([ 
    'visibility' => $channel->visibility, 
]);