首页 > 解决方案 > Laravel 排序和限制左连接的结果

问题描述

一对多关系,每个产品都有很多价格

桌子products

编号 | 姓名 | 蛞蝓 | created_at | update_at

桌子prices

编号 | 产品编号 | 标题 | 价格 | 关联

我想获取产品限制 20 表和订单 created_at 的数据限制,并且每个产品都获得最低价格,订单列价格。我想使用查询生成器。我试过了

$products = DB::table('products')
        ->leftJoin('prices', 'products.id', '=', 'prices.product_id')
        ->select('products.id', 'products.name')->distinct()
        ->selectRaw('max(prices.price) as price')
        ->groupby('products.id')
        ->orderby('products.updated_at')
        ->get();

但它获取所有产品和表prices订单列 id

标签: laravelquery-builder

解决方案


你可以像这样使用 Eloquent

public function price() {
        return $this->hasMany('App\model\Prices' , 'product_id' ,'id');
    }

像这样,它只会为您提供特定产品的映射价格

$product = Product::with('price')
                  ->where(do the stuffs)
                  ->orderBy(do the stuffs) 
                  ->get();

或者您也可以在 with() 中使用回调


推荐阅读