Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-如何更新it计算的数据';s柱_Php_Laravel - Fatal编程技术网

Php Laravel-如何更新it计算的数据';s柱

Php Laravel-如何更新it计算的数据';s柱,php,laravel,Php,Laravel,如何使用按列计算更新数据 我有桌子上的东西 +---------+-------+-------+-----------+ | item_id | stock | price | name | +---------+-------+-------+-----------+ | 1 | 10 | 9.4 | Paper | +---------+-------+-------+-----------+ | 2 | 10 | 12.8 |

如何使用按列计算更新数据 我有桌子上的东西

+---------+-------+-------+-----------+
| item_id | stock | price | name      |
+---------+-------+-------+-----------+
| 1       | 10    | 9.4   | Paper     |
+---------+-------+-------+-----------+
| 2       | 10    | 12.8  | Pencil    |
+---------+-------+-------+-----------+
| 3       | 10    | 99.9  | Note Book |
+---------+-------+-------+-----------+
然后我想通过计算stock列来更新sock

stock - $request->qty
如果我做手动基本查询

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 = Item::where('item_id', '=', $request->item_id)->first();
$item->stock = (int)$item->stock - (int)$request->qty;
$item->save();

或者,您可以尝试使用。

您可以尝试以下方法:

$item = Item::where('item_id', '=', $request->item_id)->first();
$item->stock = (int)$item->stock - (int)$request->qty;
$item->save();
或者,您可以尝试使用。

试试这个:

$item = new Item;
$item->where('item_id', '=', $request->item_id)->decrement('stock', $request->qty);
试试这个:

$item = new Item;
$item->where('item_id', '=', $request->item_id)->decrement('stock', $request->qty);

这应该对你有好处

public function saveOrder(Request $request) {
    Item::where('item_id', $request->item_id)
        ->decrement('stock', $request->qty);

    return redirect('order');
}

这应该对你有好处

public function saveOrder(Request $request) {
    Item::where('item_id', $request->item_id)
        ->decrement('stock', $request->qty);

    return redirect('order');
}

这是两个问题。。。他试图在没有存货的情况下完成这件事|OP没有提到任何疑问,也没有提到在没有得到股票的情况下完成交易。所以,我给了他两种方法来完成他的任务。@Pratekkathal:我同意Alexey Mezenin的观点。OP只是想让解决方案更新列。@VishalParkash如果一个查询就可以完成某件事,为什么要用两个查询?@Pratekkathal是的,没错,但我只是说他的方法也可以。我也检查了你的答案并投票表决每个人都有自己的工作方式这是两个问题。。。他试图在没有存货的情况下完成这件事|OP没有提到任何疑问,也没有提到在没有得到股票的情况下完成交易。所以,我给了他两种方法来完成他的任务。@Pratekkathal:我同意Alexey Mezenin的观点。OP只是想让解决方案更新列。@VishalParkash如果一个查询就可以完成某件事,为什么要用两个查询?@Pratekkathal是的,没错,但我只是说他的方法也可以。我也检查了你的答案并投票表决每个人都有自己的工作方式尝试重构这段代码,您可以在两个linestry中实现相同的功能来重构这段代码,您可以在两个linestry中实现相同的功能lines@yuliantosaparudin不是真的。。。但是是的,很高兴我能帮上忙。:)@不是真的。。。但是是的,很高兴我能帮上忙。:)这个解决方案更好,因为它只会创建一个查询
updateitems set stock=stock-2,其中item_id=2
。这个解决方案更好,因为它只会创建一个查询
updateitems set stock=stock-2,其中item\u id=2
。向上投票。