環境構築後のステップとして、MySQLデータベースとの連携から、マイグレーションとモデルを使用したカテゴリ追加機能の実装までの手順。
1. データベースの作成と接続設定
Step 1: XAMPPでデータベース(MySQL)の作成
1.XAMPP Control Panelを開き、MySQL の「Admin」ボタンをクリックして起動する。

2.ブラウザで http://localhost/phpmyadmin/ が開くので「新規作成」をクリック。

3.データベース名(例: laravel_db)を入力し、照合順序を utf8mb4_general_ci に設定して「作成」をクリック。


Step 2: .env ファイルの編集(接続設定)
VSCodeでプロジェクトを開き、ルート直下にある .env ファイルを書き換えてLaravelとデータベースを接続する。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db # 作成したデータベース名
DB_USERNAME=root # XAMPPのデフォルト
DB_PASSWORD= # XAMPPのデフォルトは空欄2. カテゴリ機能の作成(マイグレーションとモデル)
データベースにカテゴリを保存するためのテーブルと、プログラム側で制御するためのモデル・コントローラーを一括生成する。
Step 1: Artisanコマンドの実行
PS C:\xampp\htdocs\laravel-app> php artisan make:model Category -mc-m: マイグレーションファイル(テーブル定義)を同時作成-c: コントローラー(処理担当)を同時作成
Step 2: テーブル定義(マイグレーションファイルの編集)
database/migrations/xxxx_xx_xx_xxxxxx_create_categories_table.php を開き、カテゴリ名用のカラムを追加する。
public function up(): void
{
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('name'); // 追加:カテゴリ名
$table->text('description'); // 追加:カテゴリの説明文
$table->string('major_category_name');// 追加:カテゴリの大分類
$table->timestamps();
});
}Step 3: モデルの編集
一括挿入(Mass Assignment)を許可するカラムを指定する。HasFactory トレイトを使用するためのインポート文も省略せず記述して保存する。app/Models/Category.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; // 自動生成されているか要確認
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use HasFactory;
// 追加:保存を許可するカラムを指定
protected $fillable = [
'name',
'description',
'major_category_name',
];
}Step 4: マイグレーションの実行
編集後、ターミナルで以下のコマンドを実行してデータベースにテーブルを反映させる。
PS C:\xampp\htdocs\laravel-app> php artisan migrate3. シーダーによるダミーデータの追加とキャッシュクリア
Step 1: シーダークラスの生成
PS C:\xampp\htdocs\laravel-app> php artisan make:seeder CategorySeederStep 2: シーダーのデータ定義
database/seeders/CategorySeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Category; // ★追加:モデルのインポート
class CategorySeeder extends Seeder
{
public function run(): void
{
Category::truncate(); // 追加:既存データを一度クリア
// 追加:ダミーデータの挿入
Category::create([
'name' => '本',
'description' => 'ビジネス書、小説、マンガなどを含みます。',
'major_category_name' => 'エンタメ',
]);
Category::create([
'name' => 'パソコン',
'description' => 'ノートPC、デスクトップPC、周辺機器など。',
'major_category_name' => '家電・IT',
]);
}
}Step 3: DatabaseSeederへの登録
database/seeders/DatabaseSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Database\Seeders\CategorySeeder; // ★追加:シーダーのインポート
class DatabaseSeeder extends Seeder
{
public function run(): void
{
// 追加:作成したシーダーを呼び出す
$this->call([
CategorySeeder::class,
]);
}
}
Step 4: クラスマップの更新と実行
新設したシーダークラスをLaravelに認識させるため、実行前に必ずオートロードを再生成する。
PS C:\xampp\htdocs\laravel-app> composer dump-autoload完了後、テーブル再生成とデータ投入を実行。
PS C:\xampp\htdocs\laravel-app> php artisan migrate:fresh --seed4. カテゴリ追加処理(Webフォーム)の実装
Step 1: ルーティングの設定
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\CategoryController; // ★追加:コントローラーのインポート
// 追加:カテゴリ機能のルーティング
Route::get('/categories/create', [CategoryController::class, 'create'])->name('categories.create');
Route::post('/categories', [CategoryController::class, 'store'])->name('categories.store');Step 2: コントローラーの編集
app/Http/Controllers/CategoryController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Category; // ★追加:モデルのインポート
class CategoryController extends Controller
{
// 追加:登録画面の表示
public function create()
{
return view('categories.create');
}
// 追加:データの保存処理
public function store(Request $request)
{
// 入力チェック
$request->validate([
'name' => 'required|max:50',
'description' => 'required',
'major_category_name' => 'required|max:50',
]);
// データベースへ保存
Category::create([
'name' => $request->name,
'description' => $request->description,
'major_category_name' => $request->major_category_name,
]);
return redirect()->back()->with('success', 'カテゴリを追加しました。');
}
}
Step 3: ビュー(画面)の作成
resources/viewsの中にcategoriesフォルダを新規作成 する。- 作成したフォルダの中に
create.blade.phpファイルを新規作成 する。 - 作成した
create.blade.phpに、新しく拡張したカラム(大分類名・カテゴリ名・説明文)に対応した以下のHTMLコードを記述して保存する。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>カテゴリ追加</title>
</head>
<body>
<h1>カテゴリ新規追加</h1>
<!-- セッションメッセージ(登録完了)の表示 -->
@if (session('success'))
<p style="color: green;">{{ session('success') }}</p>
@endif
<!-- エラーメッセージの一括表示 -->
@if ($errors->any())
<ul style="color: red;">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<!-- カテゴリ入力フォーム -->
<form action="{{ route('categories.store') }}" method="POST">
@csrf <!-- Laravel必須のCSRFセキュリティトークン -->
<div>
<label for="major_category_name">大分類名:</label>
<input type="text" name="major_category_name" id="major_category_name" value="{{ old('major_category_name') }}">
</div>
<br>
<div>
<label for="name">カテゴリ名:</label>
<input type="text" name="name" id="name" value="{{ old('name') }}">
</div>
<br>
<div>
<label for="description">説明文:</label>
<textarea name="description" id="description">{{ old('description') }}</textarea>
</div>
<br>
<button type="submit">追加する</button>
</form>
</body>
</html>5. 動作確認(XAMPP環境)
1.XAMPP Control Panelで Apache と MySQL が緑色に点灯しているか確認。

2.http://localhost/phpmyadmin/ で、categories テーブルにシーダーの初期データが入っているか確認。

3.ブラウザを開き、XAMPPの公開ディレクトリURLへ直接アクセスする。 http://localhost/laravel-app/public/categories/create

4.フォームからカテゴリを入力・追加し、エラーなくデータベースへ反映されれば完了。


※この記事はAIで生成後、実際に手順通り実施して加筆、修正しています。



コメント