Laravel 查询生成器仅获取具有特定进度的项目

Laravel Query Builder get only item with specific progress

你好,我正在尝试获取具有特定产品进度的产品订单。

我的 Laravel 查询如下所示:

return Order::whereHas('products.progress', function (Builder $query) {
    $query->where('progress_id', 100)
        ->orWhereBetween('progress_id', [160, 240]);
      })
    ->with('products.progress')
    ->select('orders.id', 'orders.customer_id', 'orders.created_at')
    ->get();

在查询中我设置了一个 where 和 whereBetween,最后一个 Product 有 progress_id 50 一个不应该加载到订单中。

怎么做?感谢阅读。

我想你想Constraining Eager Loads

所以您的(wheres)应该正在加载中...

return Order::with(['products'=>function($query){
        $query->whereHas('progress',function ($query){
            $query->where('progress_id', 100)
                ->orWhereBetween('progress_id', [160, 240]);
        })->with('progress');
    }])
        ->select('orders.id', 'orders.customer_id', 'orders.created_at')
        ->get();