Laravelで新規プロジェクトやCRUD機能をスムーズに作成する方法
はじめに
LaravelはPHPのフレームワークの一つで、データベースと連携したWebアプリケーションを構築するときに活用されることが多いです。 シンプルな記述でありながら、実用的な機能が充実しているため、初めて触る人でも開発の流れを把握しやすいでしょう。 一方で、抽象的な概念だけで勉強していると、具体的なイメージが掴みにくいかもしれません。
そこで、この記事ではLaravelでプロジェクトを新規作成し、CRUD機能を構築するまでの流れを、なるべくわかりやすく説明していきます。 実務での利用をイメージしやすいよう、コントローラやマイグレーション、モデルなどを紐付けて解説します。
皆さんが開発を進める際に「とりあえず最初はこうやって作るのか」というところが見えてくるはずです。 「これからLaravelに触れたいけど何から始めればいいんだろう?」という疑問を解消する参考になれば嬉しいですね。
この記事を読むとわかること
- Laravelプロジェクトの新規作成手順
- コントローラ・モデル・マイグレーションの基本的な作り方
- 実務で役立つCRUD機能の実装イメージ
- データの登録・編集を行うためのルーティングやビュー構成の考え方
Laravelプロジェクトを作成する流れ
Laravelの開発で最初に行うのは、プロジェクトの新規作成です。 一般的にはComposerというPHPのパッケージ管理ツールを使って、コマンド一つでLaravelの必要ファイルを一括ダウンロードすることが多いです。
具体的には以下のようなコマンドを実行します。
composer create-project laravel/laravel sample-app
上記のコマンドにより、"sample-app"というディレクトリが生成され、その中にLaravelのフォルダ構成一式が用意されます。 ディレクトリへ移動したら、サーバーを起動してブラウザで動作を確認することができます。
cd sample-app php artisan serve
サーバーが起動すると、表示されるURLにアクセスするとLaravelの初期画面が表示されるでしょう。 この状態を起点に、コントローラやモデルの作成などを順番に行っていくと、アプリケーションを完成に近づけることができます。
コントローラを作成してみる
プロジェクトを立ち上げたら、次に行うことが多いのはコントローラの作成です。
Laravelではphp artisan make:controller
コマンドを使うことで、簡単にコントローラを生成できます。
たとえば"Article"という概念を取り扱うと想定している場合、以下のように入力すると"ArticleController"を作成できます。
php artisan make:controller ArticleController
これで、"app/Http/Controllers"ディレクトリ配下に"ArticleController.php"というファイルが生成されます。 コントローラは、HTTPリクエストを受け取り、必要な処理を行ってレスポンスを返す役割を担います。
実務では、コントローラの中でデータベースとのやり取りやバリデーションなどを行うケースが多いです。 また、ユーザーが操作した結果に応じて、表示したいビューを切り替えることも一般的です。
マイグレーションを用意する
CRUDを実装するときに欠かせないのが、データベース構造を定義するマイグレーションです。 Laravelではマイグレーションを使って、テーブルを作成したり、カラムを追加したりします。
コマンドは以下のようなイメージです。
php artisan make:migration create_articles_table
このコマンドを実行すると、"database/migrations"ディレクトリに"create_articles_table"といったファイルが生成されます。 マイグレーションファイルの"up"メソッドでは、テーブルのカラムを定義します。 たとえば、記事を管理する場合は"id"や"title"、"content"などを設計するでしょう。
Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title', 255); $table->text('content'); $table->timestamps(); });
最後にphp artisan migrate
を実行すると、定義したテーブルが実際にデータベース上に作成されます。
実務では、新しい機能を追加するたびにテーブルを追加・更新する必要があるため、マイグレーションで管理しておくと開発や運用がスムーズになるでしょう。
モデルでデータを扱う
Laravelでデータベース操作を行う際に便利なのが、Eloquent ORMと呼ばれる仕組みです。 Eloquentはテーブルを「モデル」として扱い、直感的な記述でデータベースの読み書きを実現します。
モデルを作成するには、php artisan make:model
コマンドを使います。
テーブル名が"articles"の場合は"Article"モデルを作るのが一般的です。
php artisan make:model Article
生成された"app/Models/Article.php"には、以下のようにクラスが定義されています。 これを通じて、データベースへの問い合わせやデータの保存を簡単に行えるようになります。
class Article extends Model { protected $fillable = [ 'title', 'content', ]; }
"fillable"には、外部から受け取ったデータを保存してもいいカラムを指定します。 たとえばフォームから"title"と"content"を送信している場合、ここにそれらを列挙しておくとスムーズにデータを登録できます。
ルーティングを設定する
コントローラを作成したら、Web上でのURLとコントローラのメソッドを紐付ける作業が必要です。 Laravelでは"routes/web.php"などにルートの記述を行い、どのURLでどのコントローラメソッドを呼び出すかを指定します。
たとえば、記事を一覧表示する"index"アクションと、記事を新規作成する"create"アクションを呼び出す場合、以下のように書くことが多いです。
Route::get('/articles', [ArticleController::class, 'index']); Route::get('/articles/create', [ArticleController::class, 'create']);
ここで、"index"や"create"というメソッド名は、コントローラで定義した関数です。 これらのメソッドが呼び出されると、必要なデータを用意してビューを返すといった流れになります。
URL構造を整理しておくと、後から機能を追加するときも混乱が少なくなります。 「/articles/○○」「/users/××」のように、リソースに応じてパスを切り分けるのがわかりやすい方法でしょう。
ブレイドテンプレートでフォームを作る
新規作成など、入力フォームが必要な場面では、Bladeテンプレートを使って見た目を定義します。 "resources/views/articles"などのディレクトリを作り、その中に"create.blade.php"といったファイル名で格納するのがよくあるパターンです。
たとえば"create.blade.php"に、以下のようなフォームを用意するイメージです。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>新規記事作成</title> </head> <body> <h1>新規記事作成</h1> <form action="/articles" method="POST"> @csrf <label for="title">タイトル</label> <input type="text" name="title" id="title" required> <label for="content">本文</label> <textarea name="content" id="content" required></textarea> <button type="submit">保存</button> </form> </body> </html>
@csrf
はLaravelが提供するCSRF対策の仕組みで、セキュリティ的にも重要な役割を果たします。
コントローラ側でPOSTリクエストを受け取れるように設定しておけば、フォームに入力したデータをサーバー側で扱えるようになります。
データを保存するコントローラの実装
フォームから送信されたデータをDBに保存するためには、コントローラのメソッドでEloquentの操作を呼び出します。 一般的には"store"というメソッド名で実装するケースが多いです。
"ArticleController"に以下のような処理を追記してみます。
public function store(Request $request) { $article = new Article(); $article->title = $request->input('title'); $article->content = $request->input('content'); $article->save(); return redirect('/articles'); }
このメソッドが呼び出されるのは、Route::post('/articles', [ArticleController::class, 'store']);
のようにルートを定義した場合です。
フォームの"action"が"/articles"で"method"が"POST"なので、ユーザーが保存ボタンを押すとここにデータが送られます。
保存した後は、"redirect"を使って一覧ページなどにリダイレクトするのが一般的です。 こうすることで、ユーザーは更新後のデータをすぐ確認できるようになります。
CRUDを補強するためのコントローラメソッド
CRUDのフローを完成させるには、読み込みや更新、削除などを管理するメソッドをコントローラに用意すると便利です。 よく使われるメソッドには以下のようなものがあります。
- index:一覧表示
- create:新規作成フォームの表示
- store:新規データの保存
- show:個別データの表示
- edit:既存データの編集フォーム表示
- update:既存データの更新
- destroy:データの削除
これらを組み合わせると、基本的なブログ記事管理やユーザー管理など、多岐にわたるアプリケーション機能を作ることが可能です。 フォームやビューの部分を使いやすいデザインに整えることで、実務でも応用しやすい構造へと発展させられるでしょう。
よく使うコマンドの早見表
ここで、Laravel開発時によく使うコマンドをまとめておきましょう。 視覚的に把握することで、全体像を思い出しやすくなります。
コマンド | 用途 |
---|---|
composer create-project laravel/laravel sample-app | Laravelプロジェクトの新規作成 |
php artisan serve | ローカル開発用のサーバー起動 |
php artisan make:controller SampleController | コントローラの作成 |
php artisan make:model Sample -m | モデルとマイグレーションの同時作成 |
php artisan migrate | 定義したマイグレーションを実際のDBに適用 |
php artisan migrate:rollback | 直近のマイグレーションを取り消す |
php artisan route:list | ルートの一覧を表示して、URLとメソッドを確認 |
初心者の方は、操作を間違えたときに戻せるよう、バージョン管理をきちんと行っておくことが重要です。 Gitなどのバージョン管理ツールを活用すれば、万が一設定を誤った場合でもスムーズに巻き戻せるでしょう。
まとめ
ここまで、Laravelのプロジェクトを作成してCRUDを構築する一連の流れを解説しました。 最初にプロジェクトを新規作成して、コントローラやマイグレーション、モデルを用意したら、ルーティングやビューを整えることで完成度を高めることができます。
一連の流れを把握しておけば、実務でブログ記事管理やユーザー認証などを追加したいときにも、どこに手を加えればいいのかがイメージしやすくなるでしょう。 複雑な機能を考える前に、まずはシンプルなCRUDを動かすところから始めるのが一つの近道です。
実際に手を動かしながら理解を深め、少しずつカスタマイズしていくと、自分なりの応用ができるようになります。 Laravelの基本構成を覚えておくと、様々な場面で役に立つはずです。 皆さんがLaravelでの開発をスムーズに進められることを願っています。