ライブラリのバージョンをアップグレードする
Overview
このページでは、Lambda MongoDB を新しいメジャー バージョンにアップグレードする方法を学びます。 このページには、該当する場合、機能を失うことなく Lambda 統合のバージョンをアップグレードするためにアプリケーションに加える必要がある変更も含まれています。
アップグレード方法
アップグレードする前に、次のアクションを実行してください。
新しいライブラリのバージョンが、アプリケーションが接続する MongoDB Server のバージョン、およびアプリケーションを実行する Lambda のバージョンと互換性があることを確認します。 この情報については、 の互換性ページを参照してください。
アプリケーションが現在使用している Lambda 統合のバージョンと計画されているアップグレード バージョンとの間の重大な変更については、このガイドの重大な変更セクションを参照してください。
ライブラリのバージョンをアップグレードするには、アプリケーションの ディレクトリで次のコマンドを実行します。
composer require mongodb/laravel-mongodb:5.1
ライブラリの別のバージョンにアップグレードするには、 laravel-mongodb:
の後の情報をご希望のバージョン番号に置き換えます。
重大な変更
重大な変更とは、アプリケーションが期待どおりに動作するのを妨げる可能性のある Lambda 統合の特定のバージョンにおける 規則 または 動作の変更です。
このセクションの重大な変更は、それを導入したメジャー バージョン リリースによって分類されます。 ライブラリのバージョンをアップグレードするときは、現在のバージョンと計画されているアップグレード バージョン間のすべての重大な変更に対処してください。
バージョン 5.x での重大な変更
このライブラリ バージョンでは、次の重大な変更が導入されています。
クエリ ビルダでは、配列ではなく
stdClass
オブジェクトとして結果が返されます。この変更では、クエリ結果を操作するときに、配列アクセスをプロパティアクセスに変更する必要があります。次のコードは、クエリ結果を検索し、v 5.0と比較して古いバージョンの結果オブジェクトからプロパティにアクセスする方法を示しています。
$document = DB::table('accounts') ->where('name', 'Anita Charles') ->first(); // older versions $document['balance']; // v5.0 $document->balance; 次のクラスのサポートを削除します。
MongoDB\Laravel\Auth\DatabaseTokenRepository
。代わりに、デフォルトのIlluminate\Queue\Failed\DatabaseFailedJobProvider
クラスを使用し、MongoDB への接続を指定します。MongoDB\Laravel\Queue\Failed\MongoFailedJobProvider
。代わりに、デフォルトのIlluminate\Queue\Failed\DatabaseFailedJobProvider
クラスを使用し、MongoDB への接続を指定します。
クエリで
Carbon
を含むDateTimeInterface
オブジェクトを使用する場合、ライブラリはDateTimeInterface
をMongoDB\BSON\UTCDateTime
オブジェクトに変換します。 この変換は、クエリフィルターとしてDateTimeInterface
where()
メソッドに渡される、または メソッドと メソッドに渡されるデータとして、insert()
update()
オブジェクトに適用されます。Carbon
オブジェクトをDB::where()
メソッドに渡す例については、クエリ ビルダ ガイドの「一致日付の例」セクションを参照してください。クエリ結果では、ライブラリは BSON
UTCDateTime
オブジェクトをCarbon
日付クラスに変換し、デフォルトのタイムゾーンを適用します。v 5.1 では、ライブラリは モデルインスタンスを一時停止する前に、
Model::raw()
メソッドの結果へのこの変換も実行します。id
は、MongoDB ドキュメントの_id
フィールドのエイリアスであり、ライブラリはデータのクエリ時にid
と_id
の間を自動的に変換します。 クエリ結果オブジェクトには、ドキュメントの_id
フィールドを表すid
フィールドが含まれています。 この動作のため、ドキュメント内にid
と_id
の 2 つの個別のフィールドを含めることはできません。v 5.1 では、ライブラリは モデルインスタンスを一時停止する前に、
Model::raw()
メソッドの結果へのこの変換も実行します。複雑なクエリフィルターを渡す場合は、Model::raw()
ではなくDB::where()
メソッドを使用します。$collection
プロパティのサポートを廃止します。 次のコードは、v 5.0と比較される古いバージョンのUser
クラスの変数に MongoDB コレクションを割り当てる方法を示しています。use MongoDB\Laravel\Eloquent\Model; class User extends Model { protected $keyType = 'string'; // older versions protected $collection = 'app_user'; // v5.0 protected $table = 'app_user'; ... } DB
Schema
このリリースでは、MongoDB コレクションにアクセスするための関連する メソッドと メソッドも変更されます。次のコードは、v 5.0と比較して古いバージョンのapp_user
コレクションにアクセスする方法を示しています。use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\DB; use MongoDB\Laravel\Schema\Blueprint; // older versions Schema::collection('app_user', function (Blueprint $collection) { ... }); DB::collection('app_user')->find($id); // v5.0 Schema::table('app_user', function (Blueprint $table) { ... }); DB::table('app_user')->find($id);
バージョン 4.x の重大な変更
このライブラリ バージョンでは、次の重大な変更が導入されています。
Lambda の最小バージョンは 10.0 になりました。Lambel のバージョンをアップグレードする手順については、Lambel ドキュメントの「 アップグレード ガイド 」を参照してください。
依存関係名が
"mongodb/laravel-mongodb"
になりました。composer.json
ファイル内の依存関係名が"mongodb/laravel-mongodb": "^4.0"
であることを確認します。 次に、composer update
を実行します。名前空間は
MongoDB\Laravel\
になりました。 モデルと構成ファイルで、名前空間がJenssegers\Mongodb\
からMongoDB\Laravel\
に変更されていることを確認してください。Lambda 以外のプロジェクトのサポートを廃止します。
$dates
プロパティのサポートを廃止します。 モデル ファイルで、$dates
のすべてのインスタンスを$casts
に変更していることを確認します。Model::unset($field)
は変更を保持しません。Model::unset($field)
を使用してModel::save()
へのすべての呼び出しに従うようにしてください。Query\Builder::whereAll($column, $values)
メソッドを削除します。Query\Builder::whereAll($column, $values)
へのすべての呼び出しをQuery\Builder::where($column, 'all', $values)
に置き換えてください。Query\Builder::delete()
は、1 つまたはすべてのドキュメントを削除できます。1
またはnull
の値のみをlimit()
に渡すようにしてください。whereDate()
、whereDay()
、whereMonth()
、whereYear()
、whereTime()
メソッドは、日付フィールドで MongoDB 演算子を使用するようになりました。MongoDB\Laravel\Eloquent\MassPrunable
特性を追加します。 モデル内で、Illuminate\Database\Eloquent\MassPrunable
のすべてのインスタンスをMongoDB\Laravel\Eloquent\MassPrunable
に置き換えることを確認します。次の
Query\Builder
メソッドのサポートを廃止します。toSql()
toRawSql()
whereColumn()
whereFullText()
groupByRaw()
orderByRaw()
unionAll()
union()
having()
havingRaw()
havingBetween()
whereIntegerInRaw()
orWhereIntegerInRaw()
whereIntegerNotInRaw()
orWhereIntegerNotInRaw()