ChatGPT解决这个技术问题 Extra ChatGPT

Laravel 4:如何使用 Eloquent ORM“排序”[重复]

这个问题在这里已经有了答案:Laravel Eloquent: Ordering results of all() (12 answers) 6 年前关闭。

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

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

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

据我了解,您使用此行:

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

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

你不能这样做: $posts = $this->post->orderBy('id', 'DESC')->get();
是的,对不起,我在语法上遇到了问题。谢谢-如果您将其发布为答案,我将很乐意将其选为正确答案。
谢谢你的提问。正是我想要的。
在 laravel 5 中你可以使用:->orderByDesc('id');

C
Chris G

如果你使用 post 作为模型(没有依赖注入),你也可以这样做:

$posts = Post::orderBy('id', 'DESC')->get();

仍然适用于 5.1
绝对还在 5.4 中工作
在 5.5 中也可以正常工作
我会避免下一个人将来不得不发帖,也可以在 5.7 中使用
😳😳😳 2036 年也在 laravel 28.6 工作......我刚从未来来到这里,看到了这个问题......
G
George G

如果你使用的是 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() 的查询在哪里
Laravel 会自动解析它。
我会接受这个答案。以下是我在日常工作中通常的做法: 在模式内: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'])
M
Matthew Camp

这就是我将如何去做。

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