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();
此外,沃曼的回答也是完全正确的。观点正确,回答正确。也发布了我略有不同的版本。非常感谢。