はじめに
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移行時のエラーの多くは、名前空間・設定値・命名規則の違いに起因します。