我在排序 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 结果?
最佳答案
all
执行查询并返回一个集合。您可以使用select
方法:
self::whereActive(1)
->orderBy($orderField, $orderDirection)
->select($columns)
->get();
关于php - 对指定列的 Eloquent 结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30026810/