我的数据库中有 2 个表。books
和 ratings
在 books
中id
, name
在 ratings
中id
, book_id
, rating
我已经为这些模型设置了很多关系。
所以在 Book
模型中 -
public function ratings()
{
return $this->hasMany('App\Rating');
}
在
Rating
模型中 -public function book()
{
return $this->belongsTo('App\Book');
}
现在我想获取所有具有平均评分但按高评分排序的书籍。
所以我先给书评分高,然后评分低。
那么我如何加入 2 个表来实现这个结果。
谢谢。
最佳答案
您可以使用修改后的 withCount()
:
$books = Book::withCount(['ratings as average_rating' => function($query) {
$query->select(DB::raw('coalesce(avg(rating),0)'));
}])->orderByDesc('average_rating')->get();
关于php - 如何在 Laravel 5 中使用 orderBy Desc 获得平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51252812/