2017-11-19 6 views
0

채널과 비디오 테이블간에 One to Many relationship이 있습니다. 두 테이블의 필드는 모두 visibility입니다. 채널의 공개 상태를 업데이트 할 때 해당 채널에 속한 모든 동영상의 공개 상태를 채널의 공개 상태 값으로 업데이트하려고합니다.대량 업데이트 Laravel에서 has-many 관계의 테이블

Laravel 5.4에서 대량 업데이트 기능을 수행하는 방법은 무엇입니까?

답변

2

를 업데이트해야한다. '가시성'필드가 변경되었는지 확인하고, 그렇다면 쿼리를 실행하여 모든 관련 레코드를 한꺼번에 업데이트하십시오.

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

가능성이 있습니다. 이것은 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, 
]);