我想通过最近的created_at从表中获取值。所以我用了max(created_at)。但我得到了错误的值。
例如:
Order.No => created_at
102 => 2016-03-12
103 => 2016-03-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"
我得到正确的最大值(created_at),但错误的order_number。我在代码中犯了什么错误....?谁能帮我???提前致谢
尝试使用 orderBy
,像这样:
$latestDate = Order::orderBy('created_at', 'desc')->first();
然后在查询中使用此变量。
试试这个
$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()方法