Eloquent-Laravel不能在急切加载中使用orderBy


Eloquent - Laravel Can not using orderBy in eager loading

我无法让orderBy语句在像Laravel docs 这样的热切加载函数中工作

Book::with(['view' => function ($q)
{
     $q->orderBy('total', 'desc');
}])->get();

但当我使用join语句时,它将是可以的。

Book::join('views', 'views.book_id', '=', 'books.id')
->orderBy('total', 'desc')->get();

它不会工作,因为它是这样工作的,所以您首先获取所有Book记录,然后在另一个查询中获取View关系。这就是急切加载的工作原理。所以,若要按关系表中的某个列进行排序,就必须像在第二个代码段中那样加入它。