Laravel 5 Model orderBy?

时间:2015-03-05 19:26:07

标签: php laravel eloquent

我看到你可以打电话给我MyModel::all(),然后打电话给“where”“groupBy”等等 我似乎无法找到orderBy这个Q & A suggest.. 这是否已在Laravel 5中删除?

我已经尝试查看文档以获取CollectionModel中的引用,但我假设这些实际上只是返回的集合的修饰符,而不是实际修改查询语句.. < / p>

我知道使用order by的唯一方法是

\DB::table($table)->where($column)->orderBy($column);

这是在执行查询时订购数据库的唯一方法吗?

3 个答案:

答案 0 :(得分:4)

您实际上可以像wheregroupBy一样使用它:

$result = MyModel::orderBy('name', 'desc')->get();

请注意,通过调用MyModel::all(),您已经在执行查询。


通常,您可以使用来自查询构建器的每个方法here使用Eloquent模型。原因是模型代理方法调用(它不知道)到查询构建器实例:

public function __call($method, $parameters)
{
    // irrelevant code omitted

    $query = $this->newQuery();

    return call_user_func_array(array($query, $method), $parameters);
}

$this->newQuery()创建查询构建器的实例,然后用于实际运行查询。然后,当检索到结果时,模型/集合水合,其中包含数据库中的值。


更多信息

Eloquent - Laravel 5 Docs

Illuminate\Database\Eloquent\Builder - API docs

还有常规查询构建器(因为从eloquent构建器传递了很多调用) Illuminate\Database\Query\Builder - API docs

答案 1 :(得分:0)

您可以通过以下解决方案来实现:

$result = ModelName::orderBy('id', 'desc')->get();

答案 2 :(得分:0)

您可以通过使用排序键来完成

Model::all()->sortKeys()

(或)

Model::all()->sortKeysDesc()