雄辩选择枢轴和更新

时间:2017-02-23 07:51:48

标签: php laravel eloquent

我正在开发一个应用程序,允许用户发布消息并将其发送到多个设备。

MessageDevices都是使用device_messagemessage_iddevice_id数据透视表相关联的模型,因为相同的消息可以发送给许多人设备

我创建了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)

1 个答案:

答案 0 :(得分:0)

您可以在 belongsToMany 关系中使用方法updateExistingPivot,如下所示:

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

这会在数据透视表上将成功设置为true。