首页 > 解决方案 > 如何仅根据 Laravel 7 中的 HTML 表单值更新特定列

问题描述

我正在尝试根据我的 HTML 表单输入文本值更新特定的数据库表列。在我的OrderHistoryController中,我允许客户取消我的电子商务网站项目的订单。因此,我正在更新状态和cancel_notes列。我能够做到这一点。

在我的控制器中,我有这个取消方法:

public function cancel(Order $order)
{
    $order->status = 'canceled';
    $order->save();

    //check if all suborders are canceled
    $pendingOrders = $order->where('status','!=', 'canceled')->count();

    if($pendingOrders == 0) {
        $order->update(['status'=>'canceled']);
        $order->update(['cancel_notes'=>'cancel_notes']);
    }

    // send mail to customer that order was completed
     Mail::to($order->user->email)->send(new OrderCanceled($order));


    return redirect('/order-history')->withMessage('Order was canceled');
}

如何修改此行$order->update(['cancel_notes'=>'cancel_notes']);以从我的“cancel_notes”输入文本框中获取文本值,而不是在更新时使用文字值“cancel_notes”?

提前非常感谢!:)

标签: mysqldatabaselaravelsql-updatecrud

解决方案


假设您有一个表格,在这种情况下用户可以写下取消说明,您可以这样做

public function cancel(Order $order, Request $request)
{
    $order->status = 'canceled';
    $order->save();

    //check if all suborders are canceled
    $pendingOrders = $order->where('status','!=', 'canceled')->count();

    if($pendingOrders == 0) {
        $order->update(['status'=>'canceled']);
        $order->update(['cancel_notes' => $request->cancel_notes]);
    }

    // send mail to customer that order was completed
     Mail::to($order->user->email)->send(new OrderCanceled($order));


    return redirect('/order-history')->withMessage('Order was canceled');
}

我想您的输入名称将是cancel_notes

执行此操作而不是注入Request类的其他方法,您可以request()像这样使用辅助函数request('cancel_notes')


推荐阅读