Laravel - 如何以更新它的数据计算的
如何通过它来计算更新数据的列 我有表项Laravel - 如何以更新它的数据计算的
+---------+-------+-------+-----------+
| 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');
}
任何解决方案?谢谢你的回答,抱歉的英语不好:)
试试这个:
$item = new Item;
$item->where('item_id', '=', $request->item_id)->decrement('stock', $request->qty);
你可以尝试这样的事:
$item = Item::where('item_id', '=', $request->item_id)->first();
$item->stock = (int)$item->stock - (int)$request->qty;
$item->save();
另外,您可以尝试使用DB::raw expression。
这些是2个查询......他的努力得到它没有得到股票完成。 :| – prateekkathal
OP没有提及任何关于查询或在没有获得股票的情况下完成任务。所以,我给了他两种方法来完成他的任务。 –
如果你阅读他的** ** **代码,你会正确的问题。 – prateekkathal
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
}
尝试重构此代码,并且您可能会在两行中实现相同 –
肯定感谢您的建议... – Sona
这应该做的伎俩为您
public function saveOrder(Request $request) {
Item::where('item_id', $request->item_id)
->decrement('stock', $request->qty);
return redirect('order');
}
谢谢先生,您是天才! –
@yuliantosaparudin不是真的......但是,很高兴我可以帮忙。 :) – prateekkathal
谢谢先生,你是天才! –
这个解决方案更好,因为它只会创建一个查询'更新项目集库存=库存 - 2 where item_id = 2'。给予好评。 –