【问题标题】:Eloquent select pivot and update雄辩的选择枢轴和更新
【发布时间】:2017-02-23 16:01:48
【问题描述】:

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

MessageDevices 都是使用message_iddevice_iddevice_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)

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

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

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

    这会将您的数据透视表上的 success 设置为 true。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-26
      • 2018-05-19
      • 2017-05-24
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 2020-06-28
      • 2018-01-10
      相关资源
      最近更新 更多