订购Eloquent收集结果时遇到问题。这是我的初始代码:
class Major extends Eloquent {
protected $table = 'majors';
/**
* Gets all active majors
*
* @param $orderField Field by which the collection should be ordered
* @param $orderDirection Direction of ordering
*/
public static function getAllActive($orderField = 'order', $orderDirection = 'asc') {
$columns = array('id', 'name_de', 'name_en', 'name_'.Config::get('app.locale').' as name', 'active');
return self::all($columns)->where('active', 1);
}
}
获得专业的方法很好。现在,我想按特定字段对结果进行排序,因此我将返回更改为:
return self::all($columns)->where('active', 1)->orderBy($orderField, $orderDirection);
代码抛出以下错误:
调用未定义的方法Illuminate \ Database \ Eloquent \ Collection :: orderBy()
我需要保留$columns
变量,因为我需要name
列别名。如何正确订购Eloquent结果?
答案 0 :(得分:1)
all
执行查询并返回一个集合。您可以使用select
方法:
self::whereActive(1)
->orderBy($orderField, $orderDirection)
->select($columns)
->get();
答案 1 :(得分:1)
好的,想通了。我们的想法是首先订购集合,然后选择列:
return self::orderBy($orderField, $orderDirection)
->select($columns)
->where('active', 1)
->get();
此外,Vohuman的回答也是完全有效的。