2017-02-23 1 views
0

사용자가 메시지를 게시하고 여러 장치로 보낼 수있는 앱을 개발 중입니다.Eloquent select pivot and update

MessageDevices와 동일한 메시지가 다수의 장치로 전송 될 수 message_iddevice_id를 사용 device_message 피벗 테이블과 연결된 두 모델이다.

Message이 생성 될 때 발생하는 이벤트가 있습니다. 이벤트는 기기에 푸시 알림을 전송합니다. device_message 피봇 테이블에 새 열을 만들어 메시지가 기기에 성공적으로 전송되었는지 여부를 기록합니다. 이 열은 success이고 부울입니다.

이벤트에는 device_message 테이블에서 관련 메시지 레코드를 선택하는 foreach 루프가 있습니다. 이 루프 내에서 푸시 알림이 전송됩니다. 알림이 성공적으로 전송 된 경우 피벗 테이블의 success 열을 true으로 변경하고 싶습니다. 어떻게해야합니까?

이 문은 관련 장치에 대한 피벗 테이블의 모든 레코드를 반환합니다.

$event->message->belongsToMany('Aiir\Models\Device')->withPivot('device_id', 'message_id')->where('device_id', $event->device->id) 

답변

0

이처럼 belongsToMany 관계에 방법 updateExistingPivot를 사용할 수 있습니다

$message = Message::findOrFail($id); 
$message->devices()->updateExistingPivot($deviceID, ['success' => true]); 

이 피봇 테이블에 true로 성공을 설정합니다.