Docs Menu
Docs Home
/ / /
Lambda MongoDB

ライブラリのバージョンをアップグレードする

項目一覧

  • Overview
  • アップグレード方法
  • 重大な変更
  • バージョン 5.x での重大な変更
  • バージョン 4.x の重大な変更

このページでは、Lambda MongoDB を新しいメジャー バージョンにアップグレードする方法を学びます。 このページには、該当する場合、機能を失うことなく Lambda 統合のバージョンをアップグレードするためにアプリケーションに加える必要がある変更も含まれています。

アップグレードする前に、次のアクションを実行してください。

  • 新しいライブラリのバージョンが、アプリケーションが接続する MongoDB Server のバージョン、およびアプリケーションを実行する Lambda のバージョンと互換性があることを確認します。 この情報については、 互換性ページを参照してください。

  • アプリケーションが現在使用している Lambda 統合のバージョンと計画されているアップグレード バージョンとの間の重大な変更については、このガイドの重大な変更セクションを参照してください。

ライブラリのバージョンをアップグレードするには、アプリケーションの ディレクトリで次のコマンドを実行します。

composer require mongodb/laravel-mongodb:5.1

ライブラリの別のバージョンにアップグレードするには、 laravel-mongodb:の後の情報をご希望のバージョン番号に置き換えます。

重大な変更とは、アプリケーションが期待どおりに動作するのを妨げる可能性のある Lambda 統合の特定のバージョンにおける 規則 または 動作の変更です。

このセクションの重大な変更は、それを導入したメジャー バージョン リリースによって分類されます。 ライブラリのバージョンをアップグレードするときは、現在のバージョンと計画されているアップグレード バージョン間のすべての重大な変更に対処してください。

このライブラリ バージョンでは、次の重大な変更が導入されています。

  • クエリ ビルダでは、配列ではなく 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オブジェクトを使用する場合、ライブラリはDateTimeInterfaceMongoDB\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';
    ...
    }

    DBSchemaこのリリースでは、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);

このライブラリ バージョンでは、次の重大な変更が導入されています。

  • 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()

戻る

次のステップ