はじめに

Laravel 旧バージョンから最新バージョンへの移行時に遭遇しやすいエラーと対処法をまとめました。

1. モデルの名前空間エラー

エラー内容

Class "App\User" not found

原因

Laravel 8以降、モデルはデフォルトでapp/Modelsディレクトリに配置されます。

対処法

// 旧
\App\User::all()

// 新
\App\Models\User::all()

2. セッションテーブルが見つからない

エラー内容

SQLSTATE[42S02]: Table sessions does not exist

原因

Laravel 11ではデフォルトのセッションドライバがdatabaseに変更されました。

対処法

# .env
SESSION_DRIVER=file

3. ルートパラメータ名の不一致

エラー内容

Missing required parameter for [Route: xxx]

対処法

// routes/web.php
Route::get('tables/{table_slug}', [TableController::class, 'detail']);

// ビューでは同じパラメータ名を使用
route('table_detail', ['table_slug' => $table->slug])

4. リレーションメソッド名

エラー内容

Attempt to read property on null

対処法

// モデルのリレーション名に合わせる
$post->postType->name  // キャメルケース

5. Mix manifest not found

対処法

cp old-project/public/mix-manifest.json new-project/public/
cp -r old-project/public/css new-project/public/
cp -r old-project/public/js new-project/public/

まとめ

Laravel移行時のエラーの多くは、名前空間・設定値・命名規則の違いに起因します。

カスタマイズに関するお問い合わせはこちら