简单的问题-我如何在Laravel 4中按“id”降序排序。

控制器的相关部分是这样的:

$posts = $this->post->all()

据我所知你是这么说的

->orderBy('id', 'DESC');

但这如何与我上面的代码相匹配呢?


当前回答

如果您正在使用Eloquent ORM,您应该考虑使用作用域。这将使您的逻辑保持在模型中它所属的位置。

所以,在模型中你会有:

public function scopeIdDescending($query)
{
        return $query->orderBy('id','DESC');
}   

在模型之外,你会有:

$posts = Post::idDescending()->get();

更多信息:http://laravel.com/docs/eloquent#query-scopes

其他回答

这就是我要做的。

$posts = $this->post->orderBy('id', 'DESC')->get();

如果你使用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