Laravelを使う際に絶対に必要なPHPやプログラミングの知識を解説していきます。
今回は foreach構文について。
foreachは、束になったデータをひとつずつ取り出してくれる超便利な構文。
繰り返し(ループ)処理のひとつですが、for や while などと比べ、圧倒的に出番が多いです。
まずは、foreach構文の役割から、分かりやすく解説していきますね。
foreach構文の役割
たとえば、ブログなどには、投稿記事がひとつずつ表示されていますよね。
こういう構成にするときに、foreach構文を使います。
データベースの中には、投稿記事が束になって入っています。
この中から、ひとつずつ取り出してくれるのがforeachです。
「タイトルだけ1個ずつわたして」など、小分けにして渡してくれます。
foreach構文の作り方
実際にLaravelで使うときは、コントローラーとビュー、両方で使います。
ケースバイケースですが、ビュー(表示部分)で使う割合のほうが多い気がします。
たとえば、こんなふうな記事投稿一覧ページを作るとします。
まずは投稿データを保存する仕組みを作ります。
Postモデルとpostsテーブルを作成後、次のようなフォームを使って、記事を投稿できるようにしていきます。
このフォームを使って投稿したデータは、postsテーブルに保存されます。
postsテーブルには、次の項目を用意しておきます。
id | 番号(自動でつく) |
title | 件名 |
body | 本文 |
image | 画像 |
created_at | 作成日(自動でつく) |
updated_at | 更新日(自動でつく) |
Laravelでこのテーブルのデータを表示するには、ビューファイル(blade.php) に次のように書きます。
1 2 3 4 5 6 7 |
@foreach ($posts as $post) <div> <p>{{$post->title}}</p> <p>{{$post->body}}</p> <img src="{{ asset('images/'.$post->image)}}"> </div> @endforeach |
タイトル・本文・画像を1個ずつ取り出して表示させるためのコードです。
最初に @foreach($posts as $post) とあり、$postsデータをひとつずつに分けて、$postとしてセットしています。
そのあと $post->title 、 $post->body 、 $post->image となっていますが、これによって、$postテーブルの各項目を表示させています。
コードを実行すると、こんな投稿一覧を表示できます。
foreachで束になったデータをバラバラにしよう
foreachについて、スッキリしてきましたか?
「うーん、いまいち」と感じたら、「束になったデータをバラバラにする役割がある」とだけ、覚えておいてくださいね。
Laravelでコードを組む中で、foreachを使う機会は頻発します。
今回はコントローラーの処理は割愛しましたが、foreachはコントローラーの中でも使います。
使い方に慣れていきましょう♪
ビューファイルで使う場合には、上記のように @foreach ~ @endforeachで囲む形になり、phpでの使い方と少し変わります。