我正在尝试创建一个排序功能,如果选中该功能,它将显示必要数量的订单。例如,如果用户选择显示最近3个月的订单,则需要显示该订单。
我遇到的问题是dd($three_months)
public function trackOrders()
{
$menus_child = Menu::where('menu_id', 0)->with('menusP')->get();
$contacts = Contact::all();
$orders = Auth::user()->orders->sortByDesc('order_date');
$orders->transform(function($order, $key){
$order->cart = unserialize($order->cart);
return $order;
});
$from = Carbon::now('+2:00');
$to = $from->copy()->subMonth(3);
$three_months = Order::whereBetween('created_at', [$from, $to])->get();
dd($three_months);
return view('public.users.track-orders', compact('menus_child', 'contacts', 'orders', 'order_item'));
}
但是当我做dd($three_months)
时,什么都没有显示。我只有
集合{#320▼ #项:[] }
答案 0 :(得分:0)
也许是因为您没有格式化DateTime
$from = Carbon::now('+2:00')->format('Y-m-d H:i:s');
$to = $from->copy()->subMonth(3)->format('Y-m-d H:i:s');
尝试此代码。
编辑:您不能在字符串上使用copy()
方法。这样就可以了。
$to = Carbon::now('+2:00')->subMonth(3)->format('Y-m-d H:i:s');
答案 1 :(得分:0)
使用SQL的BETWEEN
时,顺序很重要。您的$from
值大于您的$to
值。因此,尝试将它们交换:
$to = Carbon::now('+2:00');
$from = $from->copy()->subMonth(3);
$three_months = Order::whereBetween('created_at', [$from, $to])->get();