如何通过计算列来更新数据 我有表项目
+---------+-------+-------+-----------+
| item_id | stock | price | name |
+---------+-------+-------+-----------+
| 1 | 10 | 9.4 | Paper |
+---------+-------+-------+-----------+
| 2 | 10 | 12.8 | Pencil |
+---------+-------+-------+-----------+
| 3 | 10 | 99.9 | Note Book |
+---------+-------+-------+-----------+
然后我想通过计算库存列来更新袜子
stock - $request->qty
如果我做manualy基础查询
update items set stock = stock - 3 where item_id = 1
它正在工作,但当我使用laravel雄辩时,股票变为0(零),我不知道为什么,
这是我的控制器
public function saveOrder(Request $request) {
$item = new Item;
$item->where('item_id', '=', $request->item_id)->update(['stock' => 'stock - '. $request->qty]);
return redirect('order');
}
任何解决方案?谢谢你的回答,抱歉英语不好:)
答案 0 :(得分:3)
试试这个:
$item = new Item;
$item->where('item_id', '=', $request->item_id)->decrement('stock', $request->qty);
答案 1 :(得分:1)
您可以尝试这样的事情:
$item = Item::where('item_id', '=', $request->item_id)->first();
$item->stock = (int)$item->stock - (int)$request->qty;
$item->save();
或者,您可以尝试使用DB::raw expression。
答案 2 :(得分:1)
这应该是你的伎俩
public function saveOrder(Request $request) {
Item::where('item_id', $request->item_id)
->decrement('stock', $request->qty);
return redirect('order');
}
答案 3 :(得分:0)
public function saveOrder(Request $request){
$stockdetails = \DB::table('tablename')->where('itemid',$request->itemid)->first(['stock as stock']);
//update query
$update= \DB::table('tablename')->update(['stock'=>($stockdetails->stock)-($request->quantity)])->where(itemid',$request->itemid);
if($update){
//sucecss
}else{
//Fail
}