【PHP/Laravel】便利なBladeテンプレートでforeachを書いてみよう!

こんにちは!エンジニアのオータケです!

皆さんはLaravelを使う際にBladeテンプレートエンジン使いこなせてますか?

特に、モデルからデータを取得しビューに渡したあと表示する場面が出てくるかと思いますがその表示をどうやって実現していますか?

本記事では、

[基礎] Bladeテンプレートエンジンとは
[基礎] Bladeテンプレートエンジンを使ってforeachを書く方法
[実践] foreachを使った際の最初の処理と最後の処理で何かしたい

について解説いたします。

ぜひご覧ください!

目次

Bladeテンプレートエンジンとは

LaravelにはBladeテンプレートエンジンという機能がついています。

ビューを作成する際にはこのBladeテンプレートエンジンを使います。

このBladeテンプレートエンジンを使うことで同じ処理を書くことを省けたり、面倒な処理が少々短くすることができたり便利な機能です。

今回はそのBladeテンプレートエンジンを使ったforeachの書き方を学んでいきます。

Bladeテンプレートを使ってforeachの処理を書こう

早速Bladeテンプレートでのforeachの書き方を見てみましょう

@foreach ($articles as $article)
  echo $article->name;
@endforeach

Bladeテンプレートのforeachを使うためには@foreachを使います。必ず@foreachのあとには@endforeachで閉じる必要があります。

あとは、PHPのforeachと同じような使い方です。

そもそもforeachってなんだろう?という方についてはこちらの記事をご覧ください。

ループの最初または最後に何か処理をしたい場合

先程は@foreachを使ってループ処理を書いてみました。

Bladeテンプレートエンジンの@foreachにはループの最初とループの最後を判断するための機能があります。

まず、ループの最初の処理かどうかを判断するには次のようなコードを書きます。

@foreach($articles as $article)
  @if ($loop->first)
    echo 'ループの最初';
  @endif
@endforeach

$loop->firstを使うことでループの最初かどうかを判断することができます。

では次に、ループの最後かどうかを判断するためにはどうすればよいでしょうか?

@foreach($articles as $article)
  @if ($loop->last)
    echo 'ループの最後';
  @endif
@endforeach

ループの最後かどうかについては$loop->lastを使うことで判断することができます。

とっても簡単ですよね?

これらを組み合わせるとモデルで取得してきたデータをテーブルに表示する際にヘッダーにだけ何か処理をしたい、フッターにだけなにか処理をしたいなど実現することができます。

まとめ

いかがでしょうか?
今回はBladeテンプレートの@foreachについて解説してきました。

通常のforeachと使い方はかわりません。

そのため覚えるほどのことでもないかと思いますが、後半に解説した$loop->firstや$loop->lastは便利な機能だと思うので覚えておいて損はないでしょう。

Bladeテンプレートを使いこなしてよりよいLaravelライフを!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次