在laravel之间进行where时什么也没得到

时间:2019-03-14 11:44:04

标签: laravel laravel-5

我正在尝试创建一个排序功能,如果选中该功能,它将显示必要数量的订单。例如,如果用户选择显示最近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▼           #项:[]       }

2 个答案:

答案 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();