簡體   English   中英

僅在一個 Laravel 數據透視記錄上更新附加列的問題

[英]Problems updating additional column on just one Laravel pivot record

當嘗試僅更新 pivot_table 的一條記錄時,此方法會更新所有具有相同order_iduser_id記錄。 只應更新與order_iduser_idstatus_idfinished_at = null匹配的記錄。

public function pause($id)
{
    $order = Order::find($id);
    $now = Carbon::now();
    $stage = Status::find($order->status_id)->stage_id;

    $users = $order
        ->user()
        ->where('status_id', $order->status_id)
        ->where('finished_at', null)
        ->get();

    foreach($users as $user)
    {
        $user->pivot->finished_at = $now;
        $user->pivot->save();
    }

    flash()->success('Progress paused for order #' . $order->order_number .'.');
    return redirect('/department/' . $stage);

}

運行前暫停方法: 運行暫停方法前的圖像

運行后暫停方法: 運行暫停方法后的圖像

如果你只是從給定的 Order 中獲取所有用戶,你可以遍歷他們並更新他們的數據透視記錄,如下所示:

// set finished_at time for all users
foreach($users as $user)
{
    $user->order()
         ->wherePivot('status_id', $order->status_id)
         ->wherePivot('finished_at', null)
         ->updateExistingPivot($order->id, [ 'finished_at' => $now ], false);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM