【Laravel】初心者の方は絶対覚えて!Eloquentデータ取得処理まとめ
こんにちは。今回はEloquentの取得系処理メソッドをまとめてみました。それぞれの利用シーンも書いてみましたので参考にしていただければ幸いです。
事前準備として今回Eloquentで操作するusersテーブルを作成し、以下のデータを用意しました。
id | name | |
1 | joe | joe@xxx.xxx |
2 | bob | bob@yyy.yyy |
tinkerを使ってusersテーブルからデータを取得していきたいと思います。それではみていきましょう。
Eloquent取得処理
get
汎用的な取得メソッドです。QueryBuilderの構文が使えるのでwhereなどと組み合わせて使うことができます。結果は単一、複数に関わらずコレクションで返るので注意が必要です。モデルの値を操作する際はforeachで回す必要があります。
User::where('name','bob')->get();
=> Illuminate\Database\Eloquent\Collection {#4345
all: [
App\Models\User {#4095
id: "2",
name: "bob",
email: "bob@yyy.yyy",
},
],
}
first
先頭の1件を取得します。orderByと組み合わせて使うのが一般的です。単一のオブジェクトを返すので、取り回しが便利です(Foreachで回さなくて良い)。単一の値を取得する場合は迷わずこれをつかいましょう。
User::orderBy('name')->first();
=> App\Models\User {#4132
id: "2",
name: "bob",
email: "bob@yyy.yyy",
}
all
モデルの全てのレコードを取得します。Eloquentから簡単にデータを取得できます。しかし絞り込みが効かないので、実際の開発であまり活躍するシーンは無いように思います。
>>> User::all();
=> Illuminate\Database\Eloquent\Collection {#4095
all: [
App\Models\User {#3727
id: "1",
name: "joe",
email: "joe@xxx.xxx",
},
App\Models\User {#4133
id: "2",
name: "bob",
email: "bob@yyy.yyy",
},
],
}
find
主キーを指定してモデルを取得します。デフォルトではidを指定しますが、モデルで主キーを変更することもできます。
>>> User::find(1);
=> App\Models\User {#3406
id: "1",
name: "joe",
}
firstOr
firstでモデルが取得出来ない場合に別の処理を実行したい場合に使用します。引数にはクロージャ(無名関数)を指定し、モデルが取得できなかった場合に実行する処理を記述します。「値が見つからない場合」に何か他の処理に分岐する場合に使います。
User::where('name','boby')->firstOr(function(){
echo('boby not found');
});
boby not found⏎
findOrFail, firstOrFail
findやfirstが失敗した時にModelNotFoudExceptionをスローします。この例外をキャッチしない場合は404エラーを返します。モデルが取得できない=エラーの場合に使い勝手が良いです。私自身も良く使っています。
User::findOrFail(3);
Illuminate\Database\Eloquent\ModelNotFoundException with message 'No query results for model [App\Models\User] 3'
ディスカッション
コメント一覧
まだ、コメントがありません