ホームページ >バックエンド開発 >PHPチュートリアル >[ Lumen 5.2 ドキュメント ] 入門 -- アップグレードガイド
Lumen5.2 はステートレス API の提供のみに重点を置いているため、セッションを使用したい場合は Laravel 5.2 に切り替える必要があります。
Lumen 5.2 から Laravel 5.2 へのアップグレードは非常に簡単です。ルーティングとアプリケーションで作成したクラスを Laravel にコピーするだけです。Laravel と Lumen は多くの基礎となるコンポーネントを共有しているため、自分で作成したクラスであってもコピーする必要はありません。大きな変化。
laravel/lumen-framework 5.2.* を指すように、composer.json ファイルを更新します
Lumen は、このタイプの依存関係の宣言を実装しなくなりました直接参照の LaravelLumenApplication クラスに更新する必要があります。
Lumen はセッションをサポートしなくなったため、認証は完全に API トークンまたはリクエスト ヘッダーに基づいています。 Lumen での認証の実装と使用については、完全な認証ドキュメントを参照してください。
Eloquent コレクション インスタンスは、次のメソッドを提供するコレクション基本クラス (IlluminateSupportCollection) を返すようになりました: pluck、keys、zip、collapse、 flatten、flip。
スライス、チャンク、リバース メソッドでコレクション内のキーを保持できるようになりました。これらのメソッドでキーを保持したくない場合は、Collection インスタンスで value メソッドを使用できます。
MySQL 5.7 以降、0000-00-00 00:00:00 は有効な日付とみなされなくなり、厳密モードがデフォルトでオンになり、すべてのタイムスタンプ フィールドが無効になります。データベースにレコードを挿入するときは、有効なデフォルト値を受け取る必要があります。移行で useCurrent メソッドを使用してタイムスタンプ フィールドを現在のタイムスタンプにデフォルト設定することも、nullable メソッドを呼び出して null 値を許可することもできます:
$table->timestamp('foo')->nullable();$table->timestamp('foo')->useCurrent();$table->nullableTimestamps();
MySQL 5.7 では json フィールドのサポートが開始されるため、json フィールド タイプで json フィールドを作成し、それをデータベースに保存できるようになりました。5.7 より前の MySQL バージョンを使用している場合は、テキスト フィールドを使用して json データをフィールドに保存する必要があります。 。
$casts に追加される日付または日時としてマークされたすべての属性は、モデルまたはコレクションで toArray メソッドを呼び出すときに文字列に変換されるようになり、それによって $dates Date との一貫性が保たれます。配列で定義された変換は一貫性を保ちます。
グローバル スコープの実装は、使いやすくするために書き直されました。そのため、作成したコード内でこのメソッドが呼び出された場合は、削除する必要があります。
基礎となるクエリ ビルダー インスタンスにアクセスするために Eloquent クエリ ビルダーで getQuery メソッドを呼び出した場合は、それを toBase に変更する必要があります。
remove メソッドを呼び出す場合は、それを $eloquentBuilder->withoutGlobalScope($scope) に変更する必要があります。
Eloquent クエリ ビルダーに withoutGlobalScope メソッドと withoutGlobalScopes メソッドが追加されました。 $model->removeGlobalScopes($builder) へのすべての呼び出しを、より単純な $builder->withoutGlobalScopes() に変更する必要があります。
デフォルトでは、Eloquent は主キーが整数であると想定し、整数ではない主キーを設定するには、Eloquent モデルで $incrementing 属性を設定する必要があります。 false:
/** * Indicates if the IDs are auto-incrementing. * * @var bool */public $incrementing = true;
AppExceptionsHandler クラスの $dontReport 属性には、少なくとも次の例外タイプが含まれる必要があります:
use Illuminate\Validation\ValidationException;use Illuminate\Auth\Access\AuthorizationException;use Illuminate\Database\Eloquent\ModelNotFoundException;use Symfony\Component\HttpKernel\Exception\HttpException;/** * A list of the exception types that should not be reported. * * @var array */protected $dontReport = [ AuthorizationException::class, HttpException::class, ModelNotFoundException::class, ValidationException::class,];
$app->singleton('filesystem', function ($app) { return $app->loadComponent( 'filesystems', Illuminate\Filesystem\FilesystemServiceProvider::class, 'filesystem' );});
9. Validation