LaravelでのEloquentの使い方とは?Eloquentのメソッドの使い方を紹介!

エンジニア
マネージャー
LaravelでのEloquentの使い方とは?
今回は、LaravelでのEloquentの使い方について説明します。
LaravelでDBの直感的な操作が行えるのがEloquentです。Eloquentのメソッドの使い方について、コードと共に紹介します。
LaravelでのEloquentの使い方に興味のある方はぜひご覧ください。
all()
Eloquentの使い方の前に、Laravelアプリを作成しておいてください。DBは以下の状態であるとします。
1 2 3 4 5 6 7 8 9 10 |
mysql> select id,name,age,email from my_users; +----+--------+-----+--------------------+ | id | name | age | email | +----+--------+-----+--------------------+ | 2 | taro | 20 | taro@yahoo.co.jp | | 3 | jiro | 25 | jiro@gmail.com | | 4 | saburo | 30 | saburo@yahoo.co.jp | | 5 | shiro | 35 | shiro@gmail.com | | 6 | goro | 40 | goro@yahoo.co.jp | +----+--------+-----+--------------------+ |
それでは、Eloquentのallメソッドの使い方を紹介します。全レコードを取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 |
$myUser = MyUser::all(); $item = []; foreach ($myUser as $d) { $item = [ 'id' => $d->id, 'name' => $d->name, 'age' => $d->age, 'email' => $d->email, ]; print_r($item); } |
実行結果は以下のようになります。
1 |
Array ( [id] => 2 [name] => taro [age] => 20 [email] => taro@yahoo.co.jp ) Array ( [id] => 3 [name] => jiro [age] => 25 [email] => jiro@gmail.com ) Array ( [id] => 4 [name] => saburo [age] => 30 [email] => saburo@yahoo.co.jp ) Array ( [id] => 5 [name] => shiro [age] => 35 [email] => shiro@gmail.com ) Array ( [id] => 6 [name] => goro [age] => 40 [email] => goro@yahoo.co.jp ) |
レコードがすべて取得できていることが分かります。
このようにLaravelでは、Eloquentのallメソッドで全レコードを取得できます。
find()
Eloquentのfindメソッドの使い方を紹介します。主キーで検索するメソッドです。
1 2 3 4 5 6 7 8 |
$myUser = MyUser::find(3); $item = [ 'id' => $myUser->id, 'name' => $myUser->name, 'age' => $myUser->age, 'email' => $myUser->email, ]; print_r($item); |
実行結果は以下のようになります。
1 |
Array ( [id] => 3 [name] => jiro [age] => 25 [email] => jiro@gmail.com ) |
以下のように、主キーを配列で指定することもできます。
1 2 3 4 5 6 7 8 9 10 11 |
$myUser = MyUser::find([2, 3, 4]); $item = []; foreach ($myUser as $d) { $item = [ 'id' => $d->id, 'name' => $d->name, 'age' => $d->age, 'email' => $d->email, ]; print_r($item); } |
実行結果は以下のようになります。
1 |
Array ( [id] => 2 [name] => taro [age] => 20 [email] => taro@yahoo.co.jp ) Array ( [id] => 3 [name] => jiro [age] => 25 [email] => jiro@gmail.com ) Array ( [id] => 4 [name] => saburo [age] => 30 [email] => saburo@yahoo.co.jp ) |
このようにLaravelでは、Eloquentのfindメソッドで主キーで検索できます。
findOrFail()
EloquentのfindOrFailメソッドの使い方を紹介します。主キーで検索して存在しなければ例外を発生させるメソッドです。
1 2 3 4 5 6 7 8 |
$myUser = MyUser::findOrFail(1); $item = [ 'id' => $myUser->id, 'name' => $myUser->name, 'age' => $myUser->age, 'email' => $myUser->email, ]; print_r($item); |
存在しないidを指定すると、例外が発生することが分かります。
where()
Eloquentのwhereメソッドの使い方を紹介します。指定条件で検索するメソッドです。
1 2 |
$myUser = MyUser::where('age', 20)->get(); echo "$myUser"; |
実行結果は以下のようになります。
1 |
[{"id":2,"name":"taro","age":20,"email":"taro@yahoo.co.jp","created_at":"2020-11-29T11:32:42.000000Z","updated_at":"2020-11-29T11:32:42.000000Z"}] |
以下のように複数指定することで、And条件で検索できます。
1 2 3 4 5 |
$myUser = MyUser::where([ 'id' => 2, 'age' => 20, ])->get(); echo "$myUser"; |
実行結果は以下のようになります。
1 |
[{"id":2,"name":"taro","age":20,"email":"taro@yahoo.co.jp","created_at":"2020-11-29T11:32:42.000000Z","updated_at":"2020-11-29T11:32:42.000000Z"}] |
orWhereでつなけることで、or条件で検索できます。
1 2 3 4 |
$myUser = MyUser::where('id', 2) ->orWhere('id', 3) ->get(); echo "$myUser"; |
実行結果は以下のようになります。
1 |
[{"id":2,"name":"taro","age":20,"email":"taro@yahoo.co.jp","created_at":"2020-11-29T11:32:42.000000Z","updated_at":"2020-11-29T11:32:42.000000Z"},{"id":3,"name":"jiro","age":25,"email":"jiro@gmail.com","created_at":"2020-11-29T11:33:20.000000Z","updated_at":"2020-11-29T11:33:20.000000Z"}] |
このようにLaravelでは、Eloquentのwhereメソッドで指定条件で検索できます。
first()
Eloquentのfirstメソッドの使い方を紹介します。条件にマッチする最初の要素を取得するメソッドです。
1 2 |
$myUser = MyUser::find([3, 4, 5])->first(); echo "$myUser"; |
実行結果は以下のようになります。
1 |
{"id":3,"name":"jiro","age":25,"email":"jiro@gmail.com","created_at":"2020-11-29T11:33:20.000000Z","updated_at":"2020-11-29T11:33:20.000000Z"} |
count()
Eloquentのcountメソッドの使い方を紹介します。条件にマッチするレコード数を取得するメソッドです。
1 2 |
$count = MyUser::all()->count(); echo "$count"; |
実行結果は以下のようになります。
1 |
5 |
max()
Eloquentのmaxメソッドの使い方を紹介します。条件にマッチする最大値を取得するメソッドです。
1 2 |
$maxAge = MyUser::all()->max('age'); echo "$maxAge"; |
実行結果は以下のようになります。
1 |
40 |
save()
Eloquentのsaveメソッドの使い方を紹介します。値を保存するメソッドです。レコードの更新に使用します。
1 2 3 4 5 6 7 8 9 10 |
$myUser = MyUser::find(6); $myUser->age = 50; $myUser->save(); $item = [ 'id' => $myUser->id, 'name' => $myUser->name, 'age' => $myUser->age, 'email' => $myUser->email, ]; print_r($item); |
実行結果は以下のようになります。
1 |
Array ( [id] => 6 [name] => goro [age] => 50 [email] => goro@yahoo.co.jp ) |
レコードが更新されていることが分かります。
delete()
Eloquentのdeleteメソッドの使い方を紹介します。レコードを削除するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$myUser = MyUser::find(6)->delete(); $count = MyUser::all()->count(); echo "$count <br>"; $myUser = MyUser::all(); $item = []; foreach ($myUser as $d) { $item = [ 'id' => $d->id, 'name' => $d->name, 'age' => $d->age, 'email' => $d->email, ]; print_r($item); } |
実行結果は以下のようになります。
1 2 |
4 Array ( [id] => 2 [name] => taro [age] => 20 [email] => taro@yahoo.co.jp ) Array ( [id] => 3 [name] => jiro [age] => 25 [email] => jiro@gmail.com ) Array ( [id] => 4 [name] => saburo [age] => 30 [email] => saburo@yahoo.co.jp ) Array ( [id] => 5 [name] => shiro [age] => 35 [email] => shiro@gmail.com ) |
指定したレコードが削除されていることが分かります。
エンジニア
マネージャー
まとめ
いかがでしたでしょうか。
ここまで、LaravelでのEloquentの使い方についてご説明してきました。LaravelでDBの直感的な操作が行えるのがEloquentです。Eloquentのメソッドの使い方について、コードと共に紹介しました。
ここで紹介した以外にも、Eloquentのメソッドはありますので、ぜひご自身でLaravelのソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅)遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅)病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅)開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)