我想通过最近的created_at从表中获取值。所以我使用了max(created_at)。但是我得到了错误的价值。
例如:
102 => 2016年3月12日
103 => 2016年3月16日
我的结果应为 Order.No 103 ,因为它具有最大创建日期。但是我得到了Order.No 102作为我的结果。我的代码如下:
$result = Order::select(DB::raw('id,order_number,end_date,start_date,max(created_at)'),DB::raw('(datediff(end_date,start_date)+1) as Days'))->orderBy('created_at', 'desc');
$result->where('main_order', 1);
$result->where('deleted_at','=', NULL);
$result->where('customer_id', Input::get('id'));
$results = $result->get()->toArray();
我的结果是:
max(created_at):"2016-03-16"
order_number:"102"
Days:29
end_date:"2016-03-30"
id:"813115592a364d45b60aa73e7cace5d3"
start_date:"2016-03-02"
我收到了正确的max(created_at)但错误的order_number。我在代码中犯了什么错误....?任何人都可以帮我吗??? 提前致谢
答案 0 :(得分:0)
尝试使用orderBy
,如下所示:
$latestDate = Order::orderBy('created_at', 'desc')->first();
然后在查询中使用此变量。
答案 1 :(得分:0)
尝试这个
$result = Order::select(DB::raw('id,order_number,end_date,start_date,max(created_at)'),DB::raw('(datediff(end_date,start_date)+1) as Days'));
$result = $result->where('main_order', 1);
$result = $result->where('deleted_at','=', NULL);
$result = $result->where('customer_id', Input::get('id'));
$results = $result->max('created_at')->get()->toArray();
如果您使用max()
方法,则不再需要order_by()方法