15_4_Laravel6.2 → Laravel 7.x upgrade - hpscript/laravel GitHub Wiki

公式ドキュメント: https://laravel.com/docs/7.x/upgrade

Update your laravel/framework dependency to ^7.0 in your composer.json file. In addition, update your nunomaduro/collision dependency to ^4.1, phpunit/phpunit dependency to ^8.5, laravel/tinker dependency to ^2.0, and facade/ignition to ^2.0.

composer.json

//省略

"laravel/framework": "^7.0",
"nunomaduro/collision": "^4.1",
"phpunit/phpunit": "^8.5"
"laravel/tinker": "^2.0",
"facade/ignition": "^2.0",
"laravel/ui": "^2.0",

// 省略

App/Exceptions/Handler -> composer.updateする前に変更しないとエラーになる

use Throwable;

// public function report(Exception $exception)
public function report(Throwable $exception)

// public function render($request, Exception $exception)
public function render($request, Throwable $exception) 

$ php composer.phar update $ php artisan --version Laravel Framework 7.2.1

主要変更点

  • Symfony 5 関連のアップグレード -- App\Exceptions\Handlerクラスのreportとrender -- コンフィグファイルのsessionのoptionのデフォルト値の変更
  • Authenticationー認証 -- laravel/uiを~2.0にする必要
  • Date Serializationー日付のシリアライズ化 -- 2019-12-02 20:01:00は7系から2019-12-02T20:01:00.283041Zに更新
  • $model->getOriginal()メソードはキャストされたモデルを使用

その他変更点

  • PHPのバージョン 7.2.5以上
  • Blade::componentメソードをBlade::aliasComponentに変更
  • Blade Components & "Blade X"
  • "factory types"機能を削除
  • addHiddenとaddVisible削除
  • bootingとbootedをEloquentに追加
  • resolveRouteBindingメソードは$fieldパラメータ使用
  • Illuminate\Auth\Passwords\TokenRepositoryInterfaceにrecentlyCreatedTokenを使用
  • queue:workコマンドのフラグ--daemonが削除
  • Illuminate\Http\Resources\Json\Resourceは削除
  • array セッションドライバのデータはカレントリクエストに持続的にアクセス
  • TestResponseクラスのassertSee アサーションは自動的にエスケープ
  • differentルールはリクエストに特定のパラメータが足りない場合に通らない

各変更点の確認

  • Authentication laravel/ui 2.0で異常なし

  • コンフィグファイルのsessionのoptionのデフォルト値の変更 config/session.php

// 'secure' => env('SESSION_SECURE_COOKIE', false),
'secure' => env('SESSION_SECURE_COOKIE', null),

// 'same_site' => null,
'same_site' => 'lax',
  • Date Serialization 一部データをJasonで送って、blade側でdateのデータ(created_at)をmomentでMM/DD HH:mmに変換しているが、挙動確認したところ影響はない。

  • $model->getOriginal() 画像の保存処理で、$file->getClientOriginalName();としており、似ているため念の為確認したが、やはり問題なし

  • Mail Configuration File Changes 一応確認しておく。