【发布时间】:2015-08-31 08:42:06
【问题描述】:
我的问题是关于自定义 Laravel 的查询构建器的 orderBy() 方法的可能性,我用它来对急切加载的数据集进行排序。
这是我用来生成数据集的查询范围。到目前为止,一切正常。
public function scopeRestaurantsWithMenusToday($query, $city_uri){
return $query->where('city_uri', '=', $city_uri)->with([
'restaurants',
'restaurants.menusToday' => function($query) {
$query->orderBy('date', 'asc');
}
]);
}
我想要实现的是在“restaurants.menusToday”的急切负载约束中使用 orderBy() 方法的高级“asc”:
- 首先是“date == today”的所有餐厅
- 然后是“date != today”的所有餐厅
有人可以帮帮我吗?谢谢!
【问题讨论】:
-
看看您是否甚至可以让该查询在普通 SQL 中工作。然后看看你能不能把它翻译成 Eloquent。我的第一个想法是选择今天日期的所有结果,然后将它们与非今天日期的结果合并,但可能有比这更好的方法。
-
也想到了,谢谢。如果没有“优雅”的 Laravel 解决方案是可能的,只是想将此作为解决方案 :)
标签: laravel eager-loading