【问题标题】:Laravel Best Practice for UpdateLaravel 更新最佳实践
【发布时间】:2021-06-24 22:32:42
【问题描述】:

status 表上的列很少,例如 upc_status、is_immediate、total_value、price_ticket、completed_by、completed_auto_id。

客户端可以在工作完成后随时更新状态。我们需要根据status code 更新 3 个主要状态选项,让我知道减少代码行的建议或建议。我所做的如下。

      //GETTING USER INFORMATIONS
        $userName = Auth::user()->name;
        $userID = Auth::user()->id;

        if ($request->status == 0) {
            $objFetch = Order::where('id', $request->id)->update([
                'upc_status' => $request->upc_status,
                'is_immediate' => $request->is_immediate,
                'total_value' => $request->total_value,
                'price_ticket' => $request->price_ticket,
                'receiver' => $userName,
                'receiver_auto_id' => $userID,
            ]);
        }
        if ($request->status == 2) {
            $objFetch = Order::where('id', $request->id)->update([
                'upc_status' => $request->upc_status,
                'is_immediate' => $request->is_immediate,
                'total_value' => $request->total_value,
                'price_ticket' => $request->price_ticket,
                'completed_by' => $userName,
                'completed_auto_id' => $userID,
            ]);
        }
        if ($request->status == 3) {
            $objFetch = Order::where('id', $request->id)->update([
                'upc_status' => $request->upc_status,
                'is_immediate' => $request->is_immediate,
                'total_value' => $request->total_value,
                'price_ticket' => $request->price_ticket,
                'approved_by' => $userName,
                'approved_auto_by' => $userID,
            ]);
        }
        $objFetch = Order::where('id', $request->id)->update($request->all());

        return response()->json([
            'success' => true,
            'message' => 'Status updated', 
        ], 200);

【问题讨论】:

    标签: php laravel eloquent laravel-8


    【解决方案1】:

    如果唯一的区别是您要更新的最后两列,那么您不需要重复代码...此外,if 之后的 ->update() 完全是多余的...获取模型,更新特定列,然后保存一次。

    // Set up variables for use later
    $userName = Auth::user()->name;
    $userID = Auth::user()->id;
    
    // Fetch the Record from the Database
    $objFetch = Order::findOrFail($request->id);
    
    // Set the Columns that will be updated regardless of `status`
    $objFetch->upc_status = $request->input('upc_status');
    $objFetch->is_immediate = $request->input('is_immediate');
    $objFetch->total_value = $request->input('total_value');
    $objFetch->price_ticket = $request->input('price_ticket');
    
    // Set specific Columns based on `status`
    if ($request->status == 0) {
      $objFetch->receiver = $userName;
      $objFetch->receiver_auto_id = $userID;
    } elseif ($request->status == 2) {
      $objFetch->completed_by = $userID;
      $objFetch->completed_auto_id = $request->input('price_ticket');
    } elseif ($request->status == 3) {
      $objFetch->approved_by = $userName;
      $objFetch->approved_auto_by = $userID;
    }
    
    // Perform a single `save()` 
    $objFetch->save();
    
    // Return your `json` response
    return response()->json([
      'success' => true,
      'message' => 'Status updated', 
    ], 200);
    

    【讨论】:

    • 谢谢你的朋友
    猜你喜欢
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2021-07-03
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多