Laravelでテーブルに保存している最後のレコードを取得したいときありますよね。
モデルにはfirst('column')
メソッドが存在します。
これでテーブルの最初のファイルを提供することは知っていると思いますが、最後のレコードを取得する方法を解説します。
【Laravel】テーブルの最終行(最新行)を取得する方法
DBファサードを使うパターンとEloquentを使うパターンでそれぞれ。
基本的にはlatest()
メソッドを使え!です。
DBファサード
DB::table('users')->latest('id')->first();
DB::table('users')->latest('id')->toSql(); // "select * from `users` order by `id` desc"
latest()
メソッドでorder by id desc
になるわけです。
あとはfirst()を使えば最新の1レコードだけを取得することができます。
Eloquent
想像つくと思いますが、こちら。
$user = new User()
です。
$user->latest('id')->first()
リレーション先の最新レコードを取得する場合はこれです。
$user->posts()->latest()->first();
てか、普通にorderByを使ってもいいと思います。
$user->posts()->orderBy('id', 'desc')->first();
Laravel公式リファレンスはこちら。
https://laravel.com/api/9.x/Illuminate/Database/Eloquent/Builder.html#method_latest