php - 对指定列的 Eloquent 结果进行排序

标签 php laravel laravel-5

我在排序 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/

相关文章:

php - 准备好的陈述 - 它们是否必要

mysql - 与变量表的一对多关系

php - Laravel:如果字段在传递到 `view` 之前有值,请检查 Controller

php - Laravel - 更新输入文件中上传的文件

php - 删除 MySQL 中的 JSON 字段 [PHP] [CodeIgniter]

php - 解析错误 : syntax error, 意外 'public' (T_PUBLIC)

php - 使用 PHP 自动登录安全,如何以及为什么

Laravel 4 错误 : Undefined method shutdown

php - 查询和输入的区别

laravel - 从函数发送数据到 View 模板?