Laravel10からLaravel11へのアップグレード

Laravelバージョンアップ・ニュース

Laravel10のプロジェクトをLaravel11にアップグレードする際の手順について解説します。

本記事では公式マニュアルで【影響の可能性:高い】とあったものを中心に取り上げています。

ただ変更すべき項目は、Webアプリによって異なります。ご了承ください。

Laravel10からLaravel11へのアップグレード

今回は、Laravel10で作成した下記のWebアプリを、実際にローカル環境でLaravel11に変更してみました。

ライブラリのアップデート

Laravel11にするために、ライブラリをアップデートします。

composer.jsonファイル内で該当のライブラリが含まれていたら、下記のようにバージョンを上げておきます。またphpバージョンも8.2以上とします(アップグレードの際には、あらかじめphp8.2以上の環境が必要となります)。

  • laravel/framework^11.0
  • nunomaduro/collision^8.1
  • laravel/breeze^2.0へ(インストール済みの場合)
  • laravel/cashier^15.0へ(インストール済みの場合)
  • laravel/dusk^8.0へ(インストール済みの場合)
  • laravel/jetstream^5.0へ(インストール済みの場合)
  • laravel/octane^2.3へ(インストール済みの場合)
  • laravel/passport^12.0へ(インストール済みの場合)
  • laravel/sanctum^4.0へ(インストール済みの場合)
  • laravel/spark-stripe^5.0へ(インストール済みの場合)
  • laravel/telescope^5.0へ(インストール済みの場合)
  • inertiajs/inertia-laravel^1.0へ(インストール済みの場合)

わたしの場合は、下記のように、phpを含めると5項目を変更しました。

composer.jsonファイルを変更後、下記コマンドを実行してライブラリをアップデートします。

以上です。

ミドルウェアなどの登録場所はそのままで大丈夫

Laravel11ではミドルウェアの登録場所など変わっております。ですが、Laravel10からアップグレードした場合には、そのままの構造で大丈夫です。

公式マニュアルでも次のように記載があります。

Laravel10アプリケーションをLaravel11にアップグレードするときに、アプリケーション構造の移行を試みることはお勧めしません。Laravel11はLaravel10のアプリケーション構造もサポートするように注意深く調整してあります。

https://readouble.com/laravel/11.x/ja/upgrade.html

ちなみにLaravel10ではミドルウェアはapp/Http/Kernel.phpに登録しましたが、Laravel11では、bootstrap/app.phpに登録します。ですがLaravel10からLaravel11にアップグレード後は、引き続きapp/Http/Kernel.phpにミドルウェアを記述できました。

アップグレード後は、bootstrap/app.phpには、次のようにコードが記載されています。

【アップグレード後のbootstrap/app.php】

Laravel11を通常どおりインストールした際のbootstrap/app.phpファイルの書き方は、下記記事で説明しています。上記コードと見比べてみると、違いが分かります。

Laravel11では、ミドルウェアやGateの登録場所の変更が必要かと思っていましたが、そういった変更は不要でした。

手間いらずのところは、嬉しいですよね。

Laravel Cashier Stripe、Passport、Sanctum、Spark Stripe、Telescopeを使用している場合

以下のコマンドを実行して、アプリケーションへマイグレーションをリソース公開する必要があります。さらに、これらの各パッケージのアップグレードガイドを確認して、追加の変更点を把握してください。

doctrine/dbalを使用している場合

composer.jsonでdoctrine/dbalを確認し、もしあれば、下記コマンドでアンインストールします。

SQLiteを使用している場合

データベース管理システムでSQLiteを使用している場合は、Laravel11からは、SQLite3.35.0以上が必要となります。

カラムの変更がある場合

カラムに対して属性等の変更がある場合、以前に設定した属性を保持するには、カラム変更時にそれらを呼び出す必要があります。

ちょっと分かりにくいので、例を使って説明しますね。

たとえばavatarカラムに、次のようにdefault()属性を加えていたとします。

このあと、avatarカラムにcomment属性を加えるとします。そのためにマイグレーションファイルを作成しますが、この時、書き方に注意が必要です。

もし以前の設定を含めず下記のようにマイグレーションファイルを作成したとすると、最初に設定したdefault属性が消えてしまいます。

【間違った例】

最初に設定したdefault属性を保つには、次のようにdefault属性も含めた形でマイグレーションファイルを記述する必要があります。

【正しい例】

マイグレーションファイルのデータ型でdouble, float, unsignedDecimal, unsignedDouble, unsignedFloatが含まれる場合

書き方が変わっています。マニュアルを参考にしてください。

エラーになった場合

次のようなエラーになった場合には、該当ライブラリの公式ドキュメントまたは GitHub のリポジトリでLaravel11に対応する現在のバージョンを確認してください。

our requirements could not be resolved to an installable set of packages.
Problem 1
– Conclusion: don’t install laravel/framework v11.0.0 (conflict analysis result)
– Root composer.json requires spatie/laravel-ignition ^1.0 -> satisfiable by spatie/laravel-ignition[1.0.0, …, v1.x-dev].

たとえば上記のエラーは、spatie/laravel-ignition パッケージが Laravel 11 との互換性がないことを示しています。GitHub で確認した結果、次のように composer.json ファイルのバージョン指定を更新しました。

“spatie/laravel-ignition”: “^1.0”

↓↓

“spatie/laravel-ignition”: “^2.0”

このあと、再度composer updateを実行します。なお、下記のようにコマンドを実行すると、spatie/laravel-ignition だけでなく、他の依存パッケージも適切にアップデートしてくれます。依存関係に関する問題を解決するのに役立ちます。

ライブラリ(Laravel Shift)を使ったアップグレード

なおLaravelではLaravel Shiftというバージョンアップ用ライブラリを用意してくれています。

わたしは使ったことがないのですが、Laravelの公式ページでも紹介されているライブラリです。手間をかけずにバージョンアップしたいという場合には役立ちそうです。

有料ライブラリで99ドル(年間)~ですが、1回限りのプランもあります。その場合どのバージョンをアップグレードするか等によって価格は異なります。詳細は公式ページご覧ください。

さいごに

本記事では、公式マニュアルで「影響の可能性:高い」とあったものをご紹介しました。ほかにも、Webアプリによっては処理が必要となります。アップグレード前には、公式マニュアルにも目を通してくださいね。

 

なお 今回バージョンアップテストに使ったWebアプリは、わたしが運営中の学習サイト【Laravelの教科書】のサンプルサイトとなります。

学習サイト【Laravelの教科書】は、Laravelの基本の使い方を学びつつ、フォーラムサイトを作っていける実践的な教材です。

【学習サイトを通じて作成するWebアプリ画面】

ご興味あれば、下記の案内ページを見てみてくださいね。なお学習サイトでは、Laravel8~Laravel11版の教材をご用意しています。基礎編は無料です♪

Laravelの教科書について詳しく知る

Laravelバージョンアップ・ニュース

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel11版テキストに加え、Laravel8版・Laravel9版・Laravel10版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel11版テキストに加え、Laravel8版・Laravel9版・Laravel10版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

最新版Laravel11用のサポートガイドご用意しています。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました