你可以尝试这样的事情:
$dogs = Dogs::orderBy('id', 'desc')->take(5)->get();
将 orderBy
与 Descending
顺序一起使用并获取前 n
条记录。
更新(由于添加了 latest
方法):
$dogs = Dogs::latest()->take(5)->get();
我的清洁解决方案是:
Dogs::latest()->take(5)->get();
它与其他答案相同,只是使用内置方法来处理常见做法。
Dogs::orderBy('created_at','desc')->take(5)->get();
您可以传递一个负整数 n 来获取最后 n 个元素。
Dogs::all()->take(-5)
这很好,因为您不使用 orderBy,这在您有一张大桌子时很糟糕。
你也可以这样尝试:
$recentPost = Article::orderBy('id', 'desc')->limit(5)->get();
在 Laravel 5.6 中对我来说工作正常
take
和 limit
是相似的。父级是 limit
,而 take
只是别名。您可以检查文件 Builder.php
我以这种方式使用它,因为我发现它更干净:
$covidUpdate = COVIDUpdate::latest()->take(25)->get();
我想出了一个解决方案,可以帮助我使用 array_slice()
方法获得相同的结果。在我的代码中,我使用 -5
执行了 array_slice( PickupResults::where('playerID', $this->getPlayerID())->get()->toArray(), -5 );
,我想要查询的最后 5 个结果。
The Alpha 的解决方案非常优雅,但有时您需要使用 SQL 重新排序(升序)数据库中的结果(以避免在集合级别进行内存排序),并且SQL 子查询是实现此目的的好方法。
如果 Laravel 足够聪明,如果我们使用以下理想代码能够识别出我们想要创建子查询,那就太好了……
$dogs = Dogs::orderByDesc('id')->take(5)->orderBy('id')->get();
...但这会被编译为具有冲突 ORDER BY
子句的单个 SQL 查询,而不是在这种情况下所需的子查询。
不幸的是,在 Laravel 中创建子查询并不像下面的伪代码那么简单,使用起来真的很好......
$dogs = DB::subQuery(
Dogs::orderByDesc('id')->take(5)
)->orderBy('id');
...但是使用以下代码可以实现相同的结果:
$dogs = DB::table('id')->select('*')->fromSub(
Dogs::orderByDesc('id')->take(5)->toBase(),
'sq'
)->orderBy('id');
这会生成所需的 SELECT * FROM (...) AS sq ...
sql 子查询构造,并且代码在可读性方面合理干净。)
请特别注意 ->toBase()
函数的使用 - 这是必需的,因为 fromSub()
不喜欢使用 Eloquent 模型 Eloquent\Builder
实例,但似乎需要 Query\Builder
实例)。 (见:https://github.com/laravel/framework/issues/35631)
我希望这对其他人有所帮助,因为我只是花了几个小时研究如何自己实现这一目标。 (我有一个复杂的 SQL 查询构建器表达式,在某些情况下需要限制为最后几行)。
想象这样一种情况,您想从刚刚插入数据库的请求标头中获取最新的数据记录:
$noOfFilesUploaded = count( $request->pic );// e.g 4
$model = new Model;
$model->latest()->take($noOfFilesUploaded);
这样,您的 take()
辅助函数将获取刚刚通过请求发送的数组数据的数量。
您只能像这样获得 id
:
$model->latest()->take($noOfFilesUploaded)->puck('id')
从数据库获取最后一个条目
$variable= Model::orderBy('id', 'DESC')->limit(1)->get();
use DB;
$dogs = DB::select(DB::raw("SELECT * FROM (SELECT * FROM dogs ORDER BY id DESC LIMIT 10) Var1 ORDER BY id ASC"));
不定期副业成功案例分享