我正在开发一个应用程序,允许用户发布消息并将其发送到多个设备。
Message
和Devices
都是使用device_message
和message_id
与device_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)
答案 0 :(得分:0)
您可以在 belongsToMany 关系中使用方法updateExistingPivot
,如下所示:
$message = Message::findOrFail($id);
$message->devices()->updateExistingPivot($deviceID, ['success' => true]);
这会在数据透视表上将成功设置为true。