我正在开发一个应用程序,允许用户发布消息,并将其发送到多个设备。
Message和Devices都是使用message_id和device_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)发布于 2017-02-23 16:01:49
您可以在belongsToMany关系上使用updateExistingPivot方法,如下所示:
$message = Message::findOrFail($id);
$message->devices()->updateExistingPivot($deviceID, ['success' => true]);这将在您的数据透视表中将成功设置为true。
https://stackoverflow.com/questions/42409927
复制相似问题