LaravelのEloquentで特定のカラムだけをSELECTする方法を2つ解説します!
とくに2つ目のfindを使う方法が便利! なのに以外と知られていないです!
ではさっそくusersテーブル、Userモデルだと仮定して説明します。
1つ目の方法|selectメソッドのパラメータに指定
Laravelでテーブルに複数あるカラムのうちの特定の2つだけ取得(SELECT)したい場合、生のSQLだと以下のようになります。
SELECT `name`,`role` FROM `users`;
これをlaravelのeloquentでname
とrole
のカラムだけ取得するサンプルコードです。
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の細かいけど実践で役立つプログラミングのクイズを作ってみました!
\知識が身に付く、スキルチェックができる!/