我无法让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
关系。这就是急切加载的工作原理。所以,若要按关系表中的某个列进行排序,就必须像在第二个代码段中那样加入它。