Laravel 5模型订单

Str*_*ero 2 php laravel eloquent

我看你可以打电话给我MyModel::all(),然后调用“其中”“GROUPBY” ..等我似乎无法找到orderBy,因为这Q&A建议.. 已被这在Laravel 5删除?

我尝试在文档中查找“ 集合”和“ 模型”中的参考,但是我假设这些实际上只是返回的集合的修饰符,而实际上没有修改查询语句。

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

\DB::table($table)->where($column)->orderBy($column);
Run Code Online (Sandbox Code Playgroud)

这是执行查询时排序数据库选择的唯一方法吗?

luk*_*ter 5

实际上,你可以只使用它像wheregroupBy

$result = MyModel::orderBy('name', 'desc')->get();
Run Code Online (Sandbox Code Playgroud)

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


通常,您可以在此处使用Eloquent模型使用查询生成器中的每种方法。原因是模型代理方法调用(它不知道)查询构建器实例:

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

    $query = $this->newQuery();

    return call_user_func_array(array($query, $method), $parameters);
}
Run Code Online (Sandbox Code Playgroud)

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


更多信息

雄辩的-Laravel 5文档

Illuminate \ Database \ Eloquent \ Builder-API文档

还有常规查询构建器(因为雄辩的构建器传递了很多调用) Illuminate \ Database \ Query \ Builder-API文档

  • @DesignerGuy谢谢。不要忘了实际的查询构建器,因为许多调用只是从雄辩的构建器传递过来的... (2认同)