Laravel 按升序选择最后一行

Laravel 按升序选择最后一行,laravel,laravel-4,Laravel,Laravel 4,我正在尝试按升序(Laravel)选择最后5条消息,但收到以下错误:调用未定义的方法illumb\Database\Query\Builder::reverse() 这就是我尝试过的: $messages = Conversation::find($id)->messages()->orderBy("created_at", "desc")->take(5)->reverse(); 问题是您从未运行过查询。take()方法是查询生成器方法,而不是返回方法 get()是

我正在尝试按升序(Laravel)选择最后5条消息,但收到以下错误:
调用未定义的方法illumb\Database\Query\Builder::reverse()

这就是我尝试过的:

$messages = Conversation::find($id)->messages()->orderBy("created_at", "desc")->take(5)->reverse();

问题是您从未运行过查询。
take()
方法是查询生成器方法,而不是返回方法

  • get()
    是一个返回方法,它将运行查询返回集合
  • first()
    是一个返回方法,它将运行查询并返回模型实例
另外值得注意的是,
reverse()
是一种收集方法,因此要修复代码,您需要执行以下操作:

$messages = Conversation::find($id)->messages()->orderBy("created_at", "desc")->take(5)->get()->reverse();

这将非常有效,尽管我建议在实际运行方法之前检查值,但除此之外,您可以继续。

您想要最后或前5条消息吗?
reverse()
不是一种收集方法,而不是db方法吗?如果是这样,您需要
get()
take(5)之后的结果,因为查询没有实际执行,只是在上面的代码中准备好了。@JoelHinz是的,您是对的,这很有效:$messages=Conversation::find($id)->messages()->orderBy(“created_at”,“desc”)->take(5)->get()->reverse();谢谢使用“asc”是不一样的?他想要最后5个用户,所以这意味着他必须按desc排序才能得到他们。但他希望最后5个按升序排列。