首页 > 解决方案 > 使用原始查询 laravel 获取数据

问题描述

我不知道如何使用Order::with原始查询获取数据,我想$orderWhere($query).

public function getOrders()
{
    $order = Order::with([
        'menu:id,name,image_url,created_by',
        'created_user:id,name,email,avatar',
        'menu.created_user:id,name,email,avatar',
        'menu.categories'
    ])->get();
    $query = 'SELECT * FROM orders WHERE (now() >= start_at OR start_at IS NULL) AND (now() <= end_at OR end_at IS NULL)';
    $currentOrder = DB::select(DB::raw($query));
    return $currentOrder;
}

标签: phplaravel

解决方案


你为什么不这样写你的查询?

public function getOrders()
{
    $order = Order::with([
        'menu:id,name,image_url,created_by',
        'created_user:id,name,email,avatar',
        'menu.created_user:id,name,email,avatar',
        'menu.categories'
    ])
        ->where(function ($query) {
            $query->whereNull('start_at')
                ->orWhere('start_at', '<', DB::raw('NOW()'));
        })
        ->where(function ($query) {
            $query->whereNull('end_at')
                ->orWhere('end_at', '>', DB::raw('NOW()'));
        })
        ->get();

    return $order;
}

推荐阅读