Laravel:如何从DB中获取最后N个条目

Jak*_*out 37 php database laravel eloquent laravel-4

我的数据库里有狗表,我想找回来N latest added dogs.

我发现的唯一方法是这样的:

Dogs:all()->where(time, <=, another_time);
Run Code Online (Sandbox Code Playgroud)

还有另外一种方法吗?例如像这样的东西Dogs:latest(5);

非常感谢你的帮助:)

The*_*pha 85

你可以尝试这样的事情:

$dogs = Dogs::orderBy('id', 'desc')->take(5)->get();
Run Code Online (Sandbox Code Playgroud)

orderByDescending订单一起使用并获取第一批n记录.

  • 你会得到三个:-) (3认同)

Goo*_*Mac 12

我的清洁解决方案是:

Dogs::latest()->take(5)->get();
Run Code Online (Sandbox Code Playgroud)

它与其他答案相同,只是使用内置方法来处理常见做法。

  • 这也适用于 UUID,因此更通用。但它不适用于没有时间戳的表。 (4认同)

Luc*_* C. 7

Dogs::orderBy('created_at','desc')->take(5)->get();
Run Code Online (Sandbox Code Playgroud)


Bab*_*med 6

您也可以尝试这样:

$recentPost = Article::orderBy('id', 'desc')->limit(5)->get();
Run Code Online (Sandbox Code Playgroud)

在Laravel 5.6中,它对我来说很好


小智 6

您可以传递一个负整数 n 来获取最后 n 个元素。

Dogs::all()->take(-5)
Run Code Online (Sandbox Code Playgroud)

这很好,因为您不使用 orderBy,这在您有一张大桌子时会很糟糕。

  • 不保证最后 5 个结果是最后插入的 5 个。它通常可以工作,但没有保修 (2认同)