2017-02-23 84 views
0

我正在開發一個應用程序,允許用戶發佈消息並將其發送到多個設備。雄辯的選擇樞軸和更新

MessageDevices是其與使用message_iddevice_id作爲相同的消息可以被髮送到多個設備一個device_message樞軸錶鏈接這兩種模型。

我有一個事件,當Message被創建時觸發。該事件向設備發送推送通知,我想在device_message數據透視表中創建一個新列,以記錄該消息是否已成功發送到設備。該列被稱爲success,是一個布爾值。

該事件有一個foreach循環,用於選擇device_message表中的相關消息記錄。在這個循環中發送推送通知。如果通知發送成功,我想將數據透視表中的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透視表。