我的数据库中有 2 个表。
booksratings
booksid , 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/

10-08 23:21