【Laravel】テーブルの最終行(最後のレコード)を取得する方法|olderメソッド無いけどlatestはある

Laravel

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