max()函数在laravel querybuilder中无法正常工作

时间:2016-05-16 10:57:43

标签: mysql laravel

我正在尝试使用查询获取表的最大列值:

$today = Carbon::today();
    $o_no = Prev_order::whereDate('date_time',"=", $today)->max('ord_no');
    if($o_no){
        $o_no = $o_no + 1;
    }
    else{ $o_no = 1; } 

    $orders = order::where('table_no', $request->table_no)
                    ->where('dish', $request->dname)
                    ->first();      
    if($orders != null)
    {
            $qty = $orders->dish_qty + $request->dish_qty;
            $data = [
                'dish_qty' => $qty,
            ];
            $orders = order::where('dish', $request->dname)->update($data);
    }     

return response()->json($todr);

但它没有在9之后给出最大值,意味着如果最大值为10则它给出的最大值为9 ......我没有确切地说出错误。 实际上每个提交按钮后增加值,即订单号。当我检查前一个最大值(订单号)时,我在其中添加了1并更新了新订单号。但是当值为10时,通常只将值加为10,当我检查max()函数时,它只给出最大值为9,确切错误。

1 个答案:

答案 0 :(得分:0)

它只是意味着您首先从表中获取数据然后更新订单号。所以在这种情况下即使订单没有在数据库中发生变化,你也不会得到升级订单,这不是最大价值。否则请分享一些代码,这样有助于更好地理解。

我认为最大功能没有问题。如果您认为最大功能不正常,那么您可以尝试不同的查询。

DB :: table('orders') - > where('id',DB :: raw(“(从订单中选择max(id))”)) - > get();

如果您使用的是Eloquent模型。 $ order = Orders :: whereRaw('id =(从订单中选择max(id))') - > get();