laravel - 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
解决方案
你可以像这样使用 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() 中使用回调
推荐阅读
- javascript - 按月和年计算数组项
- vue.js - 使用 vue / composition api 从父组件调用子组件方法
- javascript - 我想使用 javascript 来调整我的浏览器大小,使其不会滚动
- winapi - Windows API 中是否有函数行“pthread_cleanup_push”?
- python - Python:如何使用可扩展的 numpy 数组成员创建对象
- go - golang是否有像'as'这样的运算符(C#)
- mysql - 选择从 Mysql 获取帖子评论数的最佳方式
- laravel - Laravel 路由模型绑定和回退
- apache-kafka-connect - Kafka-Connect:源和接收器可以使用相同的主题吗?
- asp.net-core - 无法执行 dotnet swagger 命令