我看到你可以打电话给我MyModel::all()
,然后打电话给“where”“groupBy”等等
我似乎无法找到orderBy
这个Q & A suggest..
这是否已在Laravel 5中删除?
我已经尝试查看文档以获取Collection和Model中的引用,但我假设这些实际上只是返回的集合的修饰符,而不是实际修改查询语句.. < / p>
我知道使用order by的唯一方法是
\DB::table($table)->where($column)->orderBy($column);
这是在执行查询时订购数据库的唯一方法吗?
答案 0 :(得分:4)
您实际上可以像where
和groupBy
一样使用它:
$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()
创建查询构建器的实例,然后用于实际运行查询。然后,当检索到结果时,模型/集合水合,其中包含数据库中的值。
更多信息
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()