Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用指定的列排序雄辩的结果_Php_Laravel_Laravel 5 - Fatal编程技术网

Php 用指定的列排序雄辩的结果

Php 用指定的列排序雄辩的结果,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在订购雄辩的收集结果时遇到问题。这是我的初始代码: 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

我在订购雄辩的收集结果时遇到问题。这是我的初始代码:

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);
该代码引发以下错误:

调用undefined方法illumb\Database\Eloquent\Collection::orderBy()


我需要保留
$columns
变量,因为我需要
名称
列别名。如何正确排序雄辩的结果?

all
执行查询并返回集合。您可以使用
select
方法:

self::whereActive(1)
    ->orderBy($orderField, $orderDirection)
    ->select($columns)
    ->get();

好吧,算了。我们的想法是先对集合进行排序,然后选择列:

return self::orderBy($orderField, $orderDirection)
            ->select($columns)
            ->where('active', 1)
            ->get();

此外,沃曼的回答也是完全正确的。

观点正确,回答正确。也发布了我略有不同的版本。非常感谢。