LaravelでwhereにAndやOrを組み入れてデータを抽出する方法【初心者のLaravel入門講座】

Laravel 入門講座

whereを上手に使うと、データベースから望み通りの値を検索・抽出できます。

「OrやAndをwhereと組み合わせて、条件式を作りたい」

「whereをどう使うか、イマイチわからない」

という方のために、whereを使ってデータベースから思いのままにデータを抽出する方法を紹介します。

基礎編からレベル5まで、レベル別に解説していきますね。

じゅんこ
じゅんこ

データ抽出が苦手な方は、ぜひ、参考にしてください。

Laravel whereにAndやOrを組み入れた複雑な条件式の作り方

今回は、次のようなデータベーステーブルから、whereを使って値を取り出していきます。

レベル① whereの基本の使い方

まずは基本レベルから。

上記のテーブルから、dangoカラムが「みたらし」のデータを抽出するには、次のように書きます。

【コントローラー】

このようにすると、表のなかから「じゅんこ」と「ただお」が抽出されます。

whereを使った基本の形をまとめると、下記のようになります。

モデル名::where(‘基準となるカラム’, ‘条件’) ->get();

whrereだけでは条件を指定するだけなので、値を抽出できません。

必ず get()または first()を最後にいれて、値を取得しましょう。

get()だと条件に合うものすべて、first()だと条件に一致する最初のデータを取得できます。

じゅんこ
じゅんこ

これ、非常に大事なポイントです。

get()で取得すると複数データ扱いになるので、ビューファイルでデータを表示する時は、foreachをよく使います。

【foreachをビューファイル上で使用する例】

レベル② whereで複数の条件を入れる

次はレベル2。複数条件を使って、データを抽出してみましょう。

上記のテーブルから、dangoカラムが「みたらし」で、さらにnumberカラムが5個以上のデータを抽出します。

【コントローラー】

上記のように取り出すと、表のなかから「ただお」だけが抽出されます。

レベル③ orWhereを使って「または」条件を入れる

「AまたはB」といった条件で値を取り出したいときはorWhereが便利です。

上記のテーブルから、dangoカラムが「みたらし」または「あんこ」のデータを抽出してみましょう。次のように書きます。

【コントローラー】

このようにすると、表のなかから「じゅんこ」「たけし」「ただお」が抽出されます。

レベル④ whereとorWhereを使って複雑な複数条件を入れる

次はレベル4。どんどん難しくなっていきます!
上記のテーブルから、

  • dangoカラムが「みたらし」で、さらにnumberカラムが6個以上、
  • またはdangoカラムが「あんこ」

のデータを抽出してみましょう。次のように書きます。

【コントローラー】

このようにすると、表のなかから「たけし」「ただお」が抽出されます。

レベル⑤ whereの中で変数を使って複雑な複数条件を入れる

最後はwhereとorWhereを使い、かつ、変数も使っていきます。

上記のテーブルから、

  • dangoカラムが「みたらし」でnumberカラムが$num個以上、
  • またはdangoカラムが「しょうゆ」

のデータを抽出してみましょう。

$numの値は、2としておきます。

この場合、次のようにwhereとorWhereと$queryを使って、コードを書きます。

【コントローラー】

このようにすると、表のなかから「じゅんこ」「けいこ」「ただお」が抽出されます。

なお、useの後の変数はカンマ, で区切れば、複数設定できます。

じゅんこ
じゅんこ

ちょっと頭がこんがらがってきますが。

whereを使って、かなり色々な条件を作れちゃいますよね。

ぜひ、whereとorWhereを便利に使いこなしていきましょう♪

コメント

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