2017-02-23 77 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透视表。