Laravel – データ表示

index~全データ表示

データの一覧を表示させるルーティングとしてindexを使う。

前提

モデルデータの操作で準備した枠組みを使う。ユーザー認証機能を持ち、ユーザーごとに入力されたシンプルな投稿記事Postを扱う。

流れ

  1. ドメイン名/postsをGETリクエスト
  2. posts.indexルートでPostsControllerindexアクションを実行
  3. indexアクションでログインユーザーの投稿記事を表示

indexアクションの呼び出し

リソースルーティングで以下のように設定されていて、GETメソッドによるリクエストの場合、ドメイン/postsからPostControllerindexアクションにルーティングされる。ルーティング名はposts

コントローラー~indexアクション

ルーティングに従って、PostControllerindexアクションを以下のように記述する。

all()メソッドは、Postモデルのデータが保存されているpostsテーブルから全データを取得して配列として返す。つまりこの段階では、すべてのログインユーザーが他のユーザーのものも含めた全投稿を見られることになる。

Postクラスや継承元のModelクラスはall()メソッドを持たないが、store()アクションで見たのと同じようにModelクラスのマジックメソッドから呼び出していると思われる。

投稿記事の配列はresource/posts/index.blade.php'posts'として渡され、これがindexビューで$postsとして利用される。

表示ビュー

投稿表示はindex.blade.phpに以下の要領で記述。

ここでは@forelseディレクティブ$postsに格納された投稿記事群を一つずつ取り出して、commentcreated_at(datetime型)を表示させている。

$postsindexアクションで読み込まれた投稿記事を格納した配列。

@forelseを使っているので、$postsが空の場合、つまり投稿が一つもされていない場合は、それに対応したメッセージが表示される。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です