Laravel 4:如何使用Eloquent ORM"排序"

Jos*_*osh 172 php laravel eloquent laravel-4

简单的问题 - 如何通过Laravel 4中的'id'降序排序.

我的控制器的相关部分如下所示:

$posts = $this->post->all()
Run Code Online (Sandbox Code Playgroud)

据我了解你使用这一行:

->orderBy('id', 'DESC');
Run Code Online (Sandbox Code Playgroud)

但是这与我上面的代码有什么关系呢?

Chr*_*s G 310

如果您使用post作为模型(没有依赖注入),您还可以:

$posts = Post::orderBy('id', 'DESC')->get();
Run Code Online (Sandbox Code Playgroud)

  • 我将保存下一个不再发布的人,也适用于5.7 (15认同)
  • 仍然适用于5.1 (4认同)
  • 绝对仍然在5.4工作 (4认同)
  • 在5.5也工作正常 (4认同)
  • 这是使用版本4时的方法! (3认同)
  • 在 2019 年和所有版本中有效。 (3认同)
  • 也在5.3工作 (2认同)
  • 也在 6.2 中工作 (2认同)
  • 也在 2036 年在 laravel 28.6 工作...我刚从未来来到这里,看到了这个问题... (2认同)
  • 它适用于所有版本,包括 laravel 9 (2认同)

Rel*_*rus 54

如果您使用的是Eloquent ORM,则应考虑使用范围.这将使您的逻辑保持在它所属的模型中.

所以,在模型中你会有:

public function scopeIdDescending($query)
{
        return $query->orderBy('id','DESC');
}   
Run Code Online (Sandbox Code Playgroud)

在模型之外你会有:

$posts = Post::idDescending()->get();
Run Code Online (Sandbox Code Playgroud)

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

  • Laravel自动解析. (3认同)

小智 27

我就是这样做的.

$posts = $this->post->orderBy('id', 'DESC')->get();
Run Code Online (Sandbox Code Playgroud)