这个问题在这里已经有了答案:Laravel Eloquent: Ordering results of all() (12 answers) 6 年前关闭。
简单的问题 - 我如何在 Laravel 4 中按 'id' 降序排序。
我的控制器的相关部分如下所示:
$posts = $this->post->all()
据我了解,您使用此行:
->orderBy('id', 'DESC');
但这与我上面的代码有什么关系呢?
如果你使用 post 作为模型(没有依赖注入),你也可以这样做:
$posts = Post::orderBy('id', 'DESC')->get();
如果你使用的是 Eloquent ORM,你应该考虑使用作用域。这会将您的逻辑保留在它所属的模型中。
因此,在模型中,您将拥有:
public function scopeIdDescending($query)
{
return $query->orderBy('id','DESC');
}
在模型之外,您将拥有:
$posts = Post::idDescending()->get();
更多信息:http://laravel.com/docs/eloquent#query-scopes
$posts = Post::idDescending()->get();
中传递给 idDescending()
的查询在哪里
public function scopeLatest($query) { return $query->orderBy('created_at')->get(); }
和在控制器内:return view('project.view')->with(['projects' => Project::latest()]);
_.orderBy(this.users, ['name', 'last_login'], ['asc', 'desc'])
这就是我将如何去做。
$posts = $this->post->orderBy('id', 'DESC')->get();