Php 在视图编辑时更新表列

Php 在视图编辑时更新表列,php,laravel,Php,Laravel,我正在处理Laravel,当用户编辑他以前的输入时,我试图得到一个表更新列的值(比如他搞糟了,不得不编辑他的顺序) 我的桌子: 材料: | id | name | count_all | count_current | price_unit | 订单: | id | count_order | material_id | invoice_id | My OrderController更新功能: public function update(Request $request, order $o

我正在处理Laravel,当用户编辑他以前的输入时,我试图得到一个表更新列的值(比如他搞糟了,不得不编辑他的顺序)

我的桌子:

材料:

| id | name | count_all | count_current | price_unit |
订单:

| id | count_order | material_id | invoice_id |
My OrderController更新功能:

public function update(Request $request, order $order){
    if(isset($_POST['delete'])){
        $order->delete();
        return redirect('/order');
    }
    else{
        $order->material_id = $request->material_id;
        $order->invoice_id = $request->invoice_id;
        $order->count_order = $request->count_order;

        $count_order = $request->input('count_order');
        $query = $order->save();
        if($query){
            if($count_order > $request->count_order){
                DB::table('materials')
                    ->where('id', $request->material_id)
                    ->increment('count_all', ($count_order - $request->count_order));
                DB::table('materials')
                    ->where('id', $request->material_id)
                    ->increment('count_current', ($count_order - $request->count_order));
            }
            elseif($count_order < $request->count_order){
                DB::table('materials')
                    ->where('id', $request->material_id)
                    ->decrement('count_all', ($request->count_order - $count_order));
                DB::table('materials')
                    ->where('id', $request->material_id)
                    ->decrement('count_current', ($request->count_order - $count_order));                    
            }
        }
        return redirect('/order');
   }
}
因此,在下订单时,它会更新物料表中的值,即:

| id = 1 | Pen | count_all + 20 | count_current + 20 | 1$ |
这意味着当您下订单时,count\u allcount\u current将随着count\u订单的值增加。现在,当我将编辑我的订单时,因为我犯了一个错误,我想订购15支而不是20支笔,它应该相应地从材料表中减去(或添加,如果值更大),以便列中的值是正确的

在控制器中处理插入的函数是:

public function insert(Request $request){

    $order = new order;

    $order->material_id = $request->material_id;
    $order->invoice_id = $request->invoice_id;
    $order->count_order = $request->count_order;

    $query = $order->save();
    if($query){
        DB::table('materials')
            ->where('id', $request->material_id)
            ->increment('count_all', $request->count_order);
        DB::table('materials')
            ->where('id', $request->material_id)
            ->increment('count_current', $request->count_order);
    }
    return redirect('/order');
}

这是简化版。首先测试是否同时更新订单和物料表

public function update(Request $request, $id){
    if(isset($_POST['delete'])){
        $order->delete();
        return redirect('/order');
    }
    else{
        $order = Order::findOrFail($id);
        $order->material_id = $request->material_id;
        $order->invoice_id = $request->invoice_id;
        $order->count_order = $request->count_order;
        $order->save();

        $materialID = $request->material_id;
        $countOrder = $request->count_order;

        DB::table('materials')
            ->where('id', $materialID)
            ->increment('count_all', $countOrder);
        DB::table('materials')
            ->where('id', $materialID )
            ->increment('count_current', $countOrder);     

        return redirect('/order');
   }
}

你能说说你得到的结果或错误吗?我没有得到任何错误。我编辑了订单,但不更新物料表中的值。所以只是我的代码不起作用。这里的顺序是什么<代码>公共功能更新(Request$Request,order$order)Model?$order是Orders表中对应行的值(例如id 2、count\u order 10、material\u id 1、invoice\u id 1-您要编辑的内容)。让我们来看看。
public function update(Request $request, $id){
    if(isset($_POST['delete'])){
        $order->delete();
        return redirect('/order');
    }
    else{
        $order = Order::findOrFail($id);
        $order->material_id = $request->material_id;
        $order->invoice_id = $request->invoice_id;
        $order->count_order = $request->count_order;
        $order->save();

        $materialID = $request->material_id;
        $countOrder = $request->count_order;

        DB::table('materials')
            ->where('id', $materialID)
            ->increment('count_all', $countOrder);
        DB::table('materials')
            ->where('id', $materialID )
            ->increment('count_current', $countOrder);     

        return redirect('/order');
   }
}