MAX()函数没有laravel的QueryBuilder

问题描述:

我尝试使用查询来获取表中的最大列值正常:MAX()函数没有laravel的QueryBuilder

$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,确切地说错误是什么。

+0

试试这个参考链接:http://*.com/questions/23073214/laravel-query-builder-where-max-id –

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

我不认为最大功能有问题。如果你认为max函数工作不正常,那么你可以尝试不同的查询。 (''id',DB :: raw(“(从订单中选择max(id))”)) - > get();

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

+0

它正在正常工作,直到没有1到9,但是当值是10时,它仍然给予最大值为9. – JohnB

+0

你能否提供一些代码? –

+0

当我使用get()我得到整行,我只需要最大值,以便我可以更新下一个订单号码,因为你可以看到 – JohnB