2017-02-23 2 views
0

Я разрабатываю приложение, которое позволяет пользователю публиковать сообщение и отправлять его на несколько Устройств.Eloquent select pivot and update

Message и Devices являются обе модели, которые связаны с таблицей device_message поворота с помощью message_id и device_id как то же самое может быть отправлено сообщение со многими устройствами.

У меня есть событие, которое срабатывает при создании Message. Событие отправляет push-уведомление устройствам, которые я хотел бы создать новый столбец в сводной таблице device_message, чтобы записать, было ли это сообщение успешно отправлено на устройство. Этот столбец называется success и является булевым.

Событие имеет петлю foreach, которая выбирает соответствующую запись сообщения в таблице device_message. В этом цикле отправляется push-уведомление. Если уведомление отправлено успешно, я хочу изменить столбец success в сводной таблице на true. Как мне это сделать?

Чтобы дать некоторый контекст, этот оператор возвращает все записи в сводной таблице для соответствующих устройств.

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

ответ

0

Вы можете использовать метод updateExistingPivot на belongsToMany отношения, как это:

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

Это установит успех к истинным на сводной таблице.