Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Actualizar la versión de la librería

En esta página, aprenderá a actualizar Laravel MongoDB a una nueva versión principal. También incluye los cambios que debe realizar en su aplicación para actualizar la versión de la integración de Laravel sin perder funcionalidad, si corresponde.

Antes de actualizar, realiza las siguientes acciones:

  • Asegúrate de que la nueva versión de la librería sea compatible con la versión de MongoDB Server a la que se conecta tu aplicación y con la versión de Laravel en la que se ejecuta tu aplicación. Ver el Compatibilidad página para esta información.

  • Aborda cualquier cambio disruptivo entre la versión de Laravel Integration que tu aplicación usa actualmente y la versión de actualización planificada en la sección Cambios disruptivos de esta guía.

Para actualizar la versión de su biblioteca, ejecute el siguiente comando en el directorio de su aplicación:

composer require mongodb/laravel-mongodb:5.7

Para actualizar a una versión diferente de la librería, reemplaza la información después de laravel-mongodb: con tu número de versión preferido.

Un cambio disruptivo es una modificación en una convención o comportamiento en una versión específica de la Integración de Laravel que podría impedir que su aplicación funcione como se esperaba.

Los cambios disruptivos en esta sección están categorizados según las principales versiones que los introdujeron. Al actualizar las versiones de la librería, aborda todos los cambios disruptivos entre tu versión actual y la versión planificada para la actualización.

Esta versión de la librería presenta los siguientes cambios disruptivos:

  • El generador de consultas devuelve los resultados como objetos stdClass en lugar de matrices. Este cambio requiere que se cambie el acceso a la matriz por el acceso a la propiedad al interactuar con los resultados de la consulta.

    El siguiente código muestra cómo recuperar un resultado de query y acceder a una propiedad del objeto resultado en versiones antiguas en comparación con la v5.0:

    $document = DB::table('accounts')
    ->where('name', 'Anita Charles')
    ->first();
    // older versions
    $document['balance'];
    // v5.0
    $document->balance;
  • Elimina el soporte para las siguientes clases:

    • MongoDB\Laravel\Auth\DatabaseTokenRepository. En cambio, utiliza la clase Illuminate\Queue\Failed\DatabaseFailedJobProvider por defecto y especifica una conexión a MongoDB.

    • MongoDB\Laravel\Queue\Failed\MongoFailedJobProvider. En cambio, utiliza la clase Illuminate\Queue\Failed\DatabaseFailedJobProvider por defecto y especifica una conexión a MongoDB.

  • Cuando se utiliza un DateTimeInterface objeto, incluida Carbon, en una consulta, la librería convierte el/la DateTimeInterface en un objeto MongoDB\BSON\UTCDateTime. Esta conversión se aplica a los DateTimeInterface objetos pasados como filtros de query al método where() o como datos pasados a los métodos insert() y update().

    Para ver un ejemplo que pasa un objeto Carbon al método DB::where(), consulte el siguiente Ejemplo de fechas coincidentes sección de la guía de Query Builder.

  • En los resultados de la query, la librería convierte los objetos BSON UTCDateTime a clases de fecha Carbon, aplicando la zona horaria por defecto.

    En v5.1, la biblioteca también realiza esta conversión a los resultados del método Model::raw() antes de hidratar una instancia de modelo.

  • id es un alias para el campo _id en documentos de MongoDB, y la librería convierte automáticamente entre id y _id al consultar datos. El objeto de resultado de la query incluye un campo id que representa el campo _id del documento. Debido a este comportamiento, no puedes tener dos campos id y _id separados en tus documentos.

    En5.1 la versión 7600, la biblioteca también realiza esta conversión a los Model::raw() resultados del método antes de hidratar una instancia de modelo. Al pasar un filtro de consulta complejo, utilice el DB::where() método en lugar Model::raw() del.

    A partir de v5.3, puedes desactivar la conversión automática de id a _id para los documentos incrustados. Para obtener más información, consulte la sección Desactivar el uso de conversión de nombres de campo "id" de la guía Opciones de conexión.

  • Se remueve la compatibilidad con la propiedad $collection. El siguiente código muestra cómo asignar una colección de MongoDB a una variable en tu clase User en versiones anteriores a la v5.0:

    use MongoDB\Laravel\Eloquent\Model;
    class User extends Model
    {
    protected $keyType = 'string';
    // older versions
    protected $collection = 'app_user';
    // v5.0
    protected $table = 'app_user';
    ...
    }

    Esta versión también modifica los métodos DB y Schema asociados para acceder a una colección de MongoDB. El siguiente código muestra cómo acceder a la colección app_user en versiones antiguas en comparación con la v5.0:

    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);

Esta versión de la librería presenta los siguientes cambios disruptivos:

  • La versión mínima de Laravel ahora es 10.0. Para obtener instrucciones sobre cómo actualizar tu versión de Laravel, consulta la Guía de actualización en la documentación de Laravel.

  • El nombre de la dependencia ahora es "mongodb/laravel-mongodb". Asegúrese de que el nombre de la dependencia en su archivo composer.json sea "mongodb/laravel-mongodb": "^4.0". Luego, ejecuta composer update.

  • El namespace ahora es MongoDB\Laravel\. Asegúrate de cambiar el namespace de Jenssegers\Mongodb\ a MongoDB\Laravel\ en tus modelos y archivos de configuración.

  • Elimina el soporte para proyectos que no sean Laravel.

  • Elimina la compatibilidad con la propiedad $dates. Asegúrate de cambiar todas las instancias de $dates a $casts en los archivos del modelo.

  • Model::unset($field) no conserva el cambio. Asegúrate de que sigues todas las llamadas a Model::unset($field) con Model::save().

  • Elimina el método Query\Builder::whereAll($column, $values). Asegúrese de reemplazar todas las llamadas a Query\Builder::whereAll($column, $values) por Query\Builder::where($column, 'all', $values).

  • Query\Builder::delete() Puede eliminar uno o todos los documentos. Asegúrese de pasar solo los valores 1 o null a limit().

  • whereDate(), whereDay(), whereMonth(), whereYear(), y whereTime() métodos ahora utilizan operadores de MongoDB en campos de fecha.

  • Agrega el MongoDB\Laravel\Eloquent\MassPrunable rasgo. Asegúrate de reemplazar todas las instancias de Illuminate\Database\Eloquent\MassPrunable por MongoDB\Laravel\Eloquent\MassPrunable en tus modelos.

  • Remueve el soporte para los siguientes métodos de Query\Builder:

    • toSql()

    • toRawSql()

    • whereColumn()

    • whereFullText()

    • groupByRaw()

    • orderByRaw()

    • unionAll()

    • union()

    • having()

    • havingRaw()

    • havingBetween()

    • whereIntegerInRaw()

    • orWhereIntegerInRaw()

    • whereIntegerNotInRaw()

    • orWhereIntegerNotInRaw()

Volver

Compatibilidad

En esta página