3 回答
TA贡献2036条经验 获得超8个赞
您可以使用子查询选择:
business = Business::with('images')
->where('isActive', true)
->where(function ($q) use ($query){
$q->where('name', 'LIKE','%'.$query.'%')->orWhere('description', 'LIKE','%'.$query.'%');
})
->orderByDesc(['topRating' => Rating::select('rating')
->whereColumn('business_id', 'businesses.id')
->orderBy('rating', 'desc')
->limit(1)])
->get();
请确保设置业务表名称而不是“业务”
TA贡献1829条经验 获得超7个赞
为此,您必须手动加入表格:
$business = Business::with('images')
->join('rating_table', 'rating_table.business_id', '=', 'business_table.id')
->where('isActive', true)
->where(function ($q) use ($query){
$q->where('name', 'LIKE','%'.$query.'%')
->orWhere('description', 'LIKE','%'.$query.'%');
})
->orderBy('rating_table.value', 'DESC')
->get();
经过多次尝试,无法使用 Eloquent 按他们的关系对“父”进行排序,您可以在关系内部进行排序,仅此而已。
TA贡献1826条经验 获得超6个赞
我相信你必须像这样使用连接:
$business = Business::select([
'businesses.*', \DB::raw('AVG(ratings.rating) as avg_rating')
])
->join('ratings', 'businesses.id', '=', 'ratings.business_id')
->orderBy('ratings.avg_rating', 'DESC')
->get();
未测试
- 3 回答
- 0 关注
- 382 浏览
添加回答
举报