L

作るものを設計する(要件とテーブル設計)

ここまでの知識を使って作る「メモ投稿アプリ」の要件を整理し、テーブル設計とルート設計を考えます。

広告枠(記事上)— 本番では AdSense 広告が表示されます

いよいよ実践です。この章では、ここまで学んだことを総動員して、ログインした人が自分のメモを投稿・編集・削除できるアプリを作ります。まずは「何を作るか」を設計しましょう。いきなりコードを書き始めず、設計から入るのが上達のコツです。

作るものの要件

シンプルな「メモ投稿アプリ」にします。要件を箇条書きにします。

  • ログインした人だけがメモを投稿できる
  • メモには タイトル本文 がある
  • 一覧・詳細・新規作成・編集・削除ができる(CRUD)
  • 編集・削除できるのは、自分が書いたメモだけ

これらは、これまでの章で学んだ要素の組み合わせでできています。

テーブル設計

メモを保存する posts テーブルを設計します。「誰のメモか」を記録するため、user_id を持たせます(第5章のリレーション)。

列名説明
idid自動の番号
user_idforeignId投稿者(users.id とつながる外部キー)
titlestringタイトル
bodytext本文
timestamps作成日時・更新日時

マイグレーションはこうなります。

Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->foreignId('user_id')->constrained();
    $table->string('title');
    $table->text('body');
    $table->timestamps();
});

ルート設計:7つの操作

CRUDのような「リソースに対する一連の操作」は、Laravel によくある7つのルートをまとめて作る仕組みがあります。これを リソースルート と呼びます。

// routes/web.php
Route::resource('posts', PostController::class);

この1行で、次の7つのルートとコントローラのメソッドが用意されます。

操作メソッド名役割
一覧indexメモ一覧を表示
詳細show1件の詳細を表示
作成画面create新規作成フォームを表示
登録store送信を受けて保存
編集画面edit編集フォームを表示
更新update編集の送信を受けて保存
削除destroy削除

「一覧・詳細・作成・編集」は画面を見せる係、「登録・更新・削除」はデータを変える係、と整理できます。

設計のまとめ図

ログインユーザー
   │ 投稿(user_id で本人と紐づく)

posts テーブル(id / user_id / title / body / timestamps)

   │ Route::resource で7つの操作
PostController(index / show / create / store / edit / update / destroy)

まとめ

  • 作るのは「ログイン必須・自分のメモだけ編集できるメモ投稿アプリ」。
  • テーブルは postsuser_id で投稿者と紐づける)。
  • Route::resource('posts', PostController::class)CRUDの7ルートを一気に用意できる。
  • 「画面を見せる係」と「データを変える係」に分けて考えると整理しやすい。
  • 次の単元では、この設計を実際に実装していきます。
広告枠(記事下)— 本番では AdSense 広告が表示されます