【Laravel】eloquentで特定のカラムだけを取得(SELECT)する方法

LaravelのEloquentで特定のカラムだけをSELECTする方法を2つ解説します!

とくに2つ目のfindを使う方法が便利! なのに以外と知られていないです!

 

ではさっそくusersテーブル、Userモデルだと仮定して説明します。

1つ目の方法|selectメソッドのパラメータに指定

Laravelでテーブルに複数あるカラムのうちの特定の2つだけ取得(SELECT)したい場合、生のSQLだと以下のようになります。

SELECT `name`,`role` FROM `users`;

これをlaravelのeloquentでnameroleのカラムだけ取得するサンプルコードです。

User::select('name','role')->get();

WHERE句を追加する場合は以下です。

User::select('name','role')->where('id', 10)->get();

また、プライマリキーでwhereを取得する場合に限ってはfindメソッドでも特定のカラムだけを選択して取得することができます。

2つ目のfindの第2引数に渡す方法

findメソッドの第2引数に取得したいカラムの名前を配列で渡します。

意外とこの使い方が知られていないみたいです。

User::find(10, ['name','role'])

これは1件だけ取得する場合ですね。

複数件をプライマリキーで取得する場合にはfindManyメソッドを使います。

単純にプライマリキーを配列で第一引数にわたすだけです。簡単ですね。

User::findMany([10,11,12], ['name','role'])

findManyメソッドは意外と知られていないメソッドですが便利なので覚えておくといいですよ。

公式リファレンス→https://laravel.com/api/9.x/Illuminate/Database/Eloquent/Builder.html#method_find

Laravelのスキルチェック

このほか、Laravelの細かいけど実践で役立つプログラミングのクイズを作ってみました!

\知識が身に付く、スキルチェックができる!/