where, getなどLaravelでデータを抽出する基本メソッド7選【初心者のLaravel入門講座】

Laravel 入門講座

Laravelにはデータベースからデータを取りだすための色々な方法があります。

よく使う all,get, find, first, pluck, where, whereIn の7個の方法を解説します。

メソッド 機能 備考
all 全て取得
find 指定したキーの要素だけ取得
first 指定したキーの最初の要素だけ取得
get 指定したキーのすべての要素を取得 all()と同じ。また他のメソッドと組み合わせられる
pluck 指定したカラム(列)の要素を取得
where 条件を指定して、フィルタをかける getなどとセットで使う
whereIn 条件を指定する際に、【含まれる】値でフィルタをかける getなどとセットで使う
じゅんこ
じゅんこ

データベースから、欲しいデータをさくさく取ってきましょー♪

なお、本記事作成にあたりLaravel8を使用しております。

知っておくべきデータを取り出す7つの基本メソッド【初心者のLaravel入門講座】

それでは7個のメソッドを紹介していきます。

なお使用するモデルクラスについて、コントローラー上部にUse宣言を入れておきましょう。

Laravel8では、app/Modelsフォルダの中にモデルファイルが作成されます。

そのため、モデルクラスを次のように記述します。

それではここから、メソッドを紹介していきます。

all()ですべて取得

all() を使うと、クラスに基づくテーブルのすべての要素を取得できます。

一覧リストを作ったりするときに便利です。

【コントローラー例】

コードの意味

userクラスの要素を取得し、$users変数に格納。

ビューファイルを表示するとき、$users変数も受け渡す。

【ビューファイル例】

ビューファイルで変数を使うときには、{{$変数名}}とします。

変数が複数ある場合は、@foreachを使うと、ひとつずつ取り出せます。

じゅんこ
じゅんこ

foreachは本当によく使います!

get() ですべて取得

get() を使うと、テーブルのすべての要素を取得できます。

【コントローラー例】

コードの意味

userクラスの要素を取得し、$users変数に格納。

ビューファイルを表示するとき、$users変数も受け渡す。

getは上記だとall()と同じ機能です。

ただ他にも、whereなど色々なメソッドに組み合わせたりもできて、活用の場が多いメソッド。

後ほど、whereを説明する際に例をお見せします。

find() で指定した要素を取得

指定した1個だけ要素を取得したい、という時は、find()を使います。

今ログインしているユーザーの要素を取ってきたい、という場合にはこちら。

【コントローラー例】

コードの意味

$authは、認証したユーザーのidとする。

userクラステーブルから、idカラムが$authと同じデータを取得し、$user変数に格納。

ビューファイルを表示するとき、$user変数も受け渡す。

【ビューファイル例】

上記のようにすると、ビューファイルにユーザーの名前を表示できます。

first() で最初の要素を取得

なんでもよいから最初の1個だけ要素を取得したい、という場合には、firstを使います。

【コントローラー例】

コードの意味

userクラスのテーブルから最初の値を取得し、$user変数に格納。

ビューファイルを表示するとき、$user変数も受け渡す。

【ビューファイル例】

pluck() で特定のカラムの要素を取得

特定のカラム(列)のデータだけ必要、という場合には、pluck()が使えます。

【コントローラー例】

コードの意味

userクラスのテーブルからnameカラムの値を取得し、$users変数に格納。

ビューファイルを表示するとき、$users変数も受け渡す。

【ビューファイル例】

where()で条件を指定する

「特定のユーザーIDに対応するメールアドレスがほしい」など、条件が明確なときは whereが便利です。

たとえば、「今ログインしているユーザーのデータを取得したい」という場合は、下記のようにします。

【コントローラー例】

コードの意味

$authは、認証したユーザーのidとする。

userクラステーブルから、idカラムが$authと同じデータを取得し、$user変数に格納。

ビューファイルを表示するとき、$user変数も受け渡す。

【ビューファイル例】(ユーザー名表示)

whereで取得した値を使うには、上記のようにget()などを組み合わせる必要があります。

whereIn()で条件を指定する

where()には色々なバリエーションがあります。

たとえば「完全一致ではなく、指定した値が含まれているデータを取ってきてほしい」場合には、whereIn()というメソッドが使えます。

下記は「電話番号に【0】か【1】が入るユーザーを取ってくる」というコードになります。

【コントローラー例】

コードの意味

userクラスのテーブルから、[phone]カラムに0か1が含まれるユーザーを取得。

$user変数に格納。

ビューファイルを表示するとき、$user変数も受け渡す。

【ビューファイル例】(ユーザー名表示)

whereInは、条件を配列の形で指定する必要があるので、書き方に注意してください。

$users=User::whereIn(‘phone’, [0, 1])->get();

さいごに

7個のメソッドを紹介しました。

これだけで基本はOKですが、他にも最大値や最小値を返してくれたり、アイテムの数を返してくれるメソッドなど、色々なことができます。

「こんなことできないかな」と思ったら、公式マニュアルも検索してみてください。

125個もメソッドが紹介されているので、ご要望に合うものもあるのではないかと思います。

じゅんこ
じゅんこ

探すの大変ですが^^;

ちなみにクエリビルダとEloquentの違いは、こちらの記事に載っています。

コメント

タイトルとURLをコピーしました