我找到了一种通过单独的模型(也称为模型,如在汽车模型中)对laravel模型进行排序的方法'命中'通过使用DB :: table函数,但我想知道如何使用Eloquent
获得相同的结果ie(DB :: table way)
DB::table('series')
->join('model','model.series_id','=','series.id')
->orderBy('model.hits', 'asc')
->get();
这会返回一个stdClass对象的数组,但是我想找到一种方法将它作为模型对象的数组返回,再次模型引用名为model的模型(抱歉混淆)。
ie(如果你刚找到一个型号)
Model::orderBy('hits', 'asc')->get();
但显然我想要检索这个系列。对不起,我有点新鲜,我不知道怎么解释它比这更好。任何帮助表示赞赏!!!
答案 0 :(得分:0)
您是否尝试过使用Eager Load Constraints
?
Series::with(array('models' => function ($query) {
$query->orderBy('hits');
}))->get();
答案 1 :(得分:0)
是的,DB ::将返回stdObjects,但您可以轻松地使用Eloquent执行相同操作:
// Assuming your models are Serie.php and
// Hit.php, with table hits: id, count, serie_id ...
Serie::join('hits', 'hits.serie_id', '=', 'series.id')
->orderBy('hits.count', 'asc')
->get();
这将返回Eloquent Collection。
此时加载加载不起作用,因为它没有加入表格,所以你最终会得到每个系列的有序相关命中,但它不会影响系列订单。
但是如果你仍然需要每个系列的相关模型(命中),那么也要使用急切加载来避免n + 1问题。