33
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel 6.0 アップデートメモ

Last updated at Posted at 2019-09-04

2019/09/04 リリース。おめでとうございます。5.9 を飛ばしての LTS バージョンになりました。5.5が以前のLTSでしたので久々のLTSになります。(5.5 → 6.0 へのアップグレード量は多い気がするの…)

このバージョンからバージョン番号の法則性に semver が採用されます。なんかしれっと新しい機能が追加されたりしても追っかけられるようになりました。

そして Laravel をいい感じにサーバレスにさせる Vapor に対応しているみたいです。

そんなわけで、アップグレードメモ。今回も変更点多いけど、細かいところや以前から消える予定の物が消えたので、アップグレード事態は一時間で終わるかも?

メモ書き程度に一覧を書いているけど、ADD,LOW 部分は気が向いたら追加する。

HIGH : Authorized Resources & viewAny

Controller Helper にて、Policy Method viewAny が追加されました。それに対応した Controller Method 側には index が追加され、すでに index メソッドがあるばあいは呼ばれなくなるそうです。

HIGH : String & Array Helpers

Laravel Helper にあった関数 str_array_ が新しい laravel/helpers パッケージに移りました。今までどおり使うには composer require laravel/helpers を実行して取り込んでください。

NEW : Facade/Ignition

開発環境時のエラーページに Ignition が採用されたそうです。

NEW : Improved Authorization Responses

認証時のメッセージをかんたんに変更できて見せられるようになりました。

Router/Controller の実行コードに Gate::inspect('view', $flight)->denied()$this->deny('Explanation of denial') といった感じで書けるようになりました。

see : Gate Response / Laravel 6.0

NEW : Job Middleware

Job に Middleware を被せられるようになりました。やったね、これで特定の Job のログの書き出し先を変更するのがちょっと楽になるよ!

see : Job Middleware / Laravel 6.0

New : Lazy Collections

遅延評価っぽい。

see : Lazy Collection / Laravel6.0

NEW : Eloquent Subquery Enhancements

サブクエリーに対応しました。

……どういうクエリーが発行されるかドキュメント見ただけじゃわからんので、自身で検証してください。

see : Eloquent Advanced Subqueries / Laravel6.0

NEW : Laravel UI

Laravel に梱包されていた JS まわりが分離され、 laravel/ui となりました。

see : Laravel UI / Laravel6.0

medium : PHP 7.2 Required

PHP 7.1 以下は非推奨になりました。PHP 7.1 は 2019.12.1 にサポートが切れます。

see : https://www.php.net/supported-versions.php

medium : Authentication RegisterController

Laravel 標準の RegisterController に変更がありました。

RegisterController の小クラスで registeredregister メソッドを使用しているとき、親クラスの registered メソッドでユーザの追加やイベントの発火などをしているので、 parent::registered()parent::register を呼び出さないとユーザの新規登録に失敗します。

medium : Carbon 1.x No Longer Supported

Laravel が Carbon1.x のサポートを打ち切りますので、Carbon2.0 にアップグレードしてください。

Carbon2 は TimeZone 表記(YYYY-MM-DD HH:ii:ssZZZZ) 対応がメインっぽい。

see : Drop Carbon v1 / github.com

medium : Database Capsule::table Method

注意 この変更は illuminate/database を使っている Laravelでない アプリケーションに影響があります。(Lumen ってことやろか?)

Illuminate\Database\Capsule\Manager::table メソッドの第2引数が変わったので、それに合わせて変更をしてください。

see : Capsule table / Laravel 6.0 Upgrade guide

medium : Eloquent Arrayable & toArray

Eloquent の toArray メソッドの帰り値が Illuminate\Contracts\Support\Arrayable を実装する属性を普通の配列(array)にキャストするようになりました。

medium : Eloquent BelongsTo::update Method

$model->user()->update([]); のばあいだと event が発生していしまいますが $model->user->update([]); のばあいだと event が発生しなくなりました。

medium : Eloquent Primary Key Types

Primary Key は int/bigint だけだったのが string も対応できるようになりました。

medium : Localization Lang::trans and Lang::transChoice Methods

Lang クラスのメソッド名の変更がありました。

  • Lang::trans => Lang::get
  • Lang::transChoice => Lang::choice

Illuminate\Contracts\Translation\Translator を使用しているクラスも同様に変更が必要です。

medium : Localization Lang::getFromJson Method

Lang::getLang::getFromJson が統合されました。 Lang::getFromJson を呼んでいる部分は、 Lang::get を呼び出すように変更する必要があります。

medium : Queue Retry Limit

php artisan queue:work において、Jobの実行が失敗結果のときは再実行を、成功するまで無限回実行します。しかし Laravel6 では一回失敗したらすぐに failed になるように変更されました。もし今まで通りの成功するまで実行する場合は --tries=0 オプションを追加してください。

(これ Redis や Database の接続が死んだとき、failed_queue テーブルにデータが入らないときは、死んだままになるはずよね…?)

(これ Laravel Vapor に対応させるために追加されたオプションよね。)

medium : Resend Email Verification Route

標準の再メール認証が Get Request だったのを、 Post Request + csrf 付きになりました。古いテンプレートに変更を加えてください。

medium : The Input Facade

Input Facade は Request Facade と機能がかぶっているので削除されました。Input::get()Request::input() に置換してください。

33
36
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?