Php 在视图编辑时更新表列
我正在处理Laravel,当用户编辑他以前的输入时,我试图得到一个表更新列的值(比如他搞糟了,不得不编辑他的顺序) 我的桌子: 材料: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
| 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 all和count\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');
}
}