Menu Docs
Página inicial do Docs
/ / /
Laravel MongoDB

Atualizar versão da biblioteca

Nesta página

  • Visão geral
  • Como fazer a atualização
  • Mudanças de última hora
  • Versão 5.x: mudanças importantes
  • Alterações significativas na versão 4.x

Nesta página, você pode aprender como atualizar o Laravel MongoDB para uma nova versão principal. Esta página também inclui as alterações que você deve fazer no seu aplicação para atualizar sua versão da integração com o Laravel sem perder a funcionalidade, se aplicável.

Antes de atualizar, execute as seguintes ações:

  • Certifique-se de que a nova versão da biblioteca seja compatível com a versão do MongoDB Server à qual seu aplicação se conecta e com a versão do Laravel em que seu aplicação é executado. Consulte a página deCompatibilidade do para obter essas informações.

  • Resolva quaisquer alterações importantes entre a versão da Integração Laravel que seu aplicação agora usa e a versão de atualização planejada na seção Alterações Importantes deste guia.

Para atualizar sua versão da biblioteca, execute o seguinte comando no diretório do aplicativo:

composer require mongodb/laravel-mongodb:5.1

Para atualizar para outra versão da biblioteca, substitua as informações após laravel-mongodb: pelo número da versão desejada.

Uma alteração interruptiva significativa é uma modificação em uma convenção ou comportamento em uma versão específica da integração com o Laravel que pode impedir que seu aplicação funcione conforme o esperado.

As mudanças significativas nesta seção são categorizadas pelas versões principais que as introduziram. Ao atualizar as versões da biblioteca, resolva todas as alterações significativas entre sua versão atual e a versão de atualização planejada.

Esta versão da biblioteca introduz as seguintes alterações de quebra:

  • O construtor de query retorna resultados como objetos stdClass em vez de arrays. Essa alteração exige que você altere o acesso da array ao acesso à propriedade ao interagir com os resultados da query.

    O código a seguir mostra como recuperar um resultado de query e acessar uma propriedade do objeto de resultado em versões mais antigas em comparação com a v5.0:

    $document = DB::table('accounts')
    ->where('name', 'Anita Charles')
    ->first();
    // older versions
    $document['balance'];
    // v5.0
    $document->balance;
  • Remove o suporte para as seguintes classes:

    • MongoDB\Laravel\Auth\DatabaseTokenRepository. Em vez disso, use a classe Illuminate\Queue\Failed\DatabaseFailedJobProvider padrão e especifique uma conexão com o MongoDB.

    • MongoDB\Laravel\Queue\Failed\MongoFailedJobProvider. Em vez disso, use a classe Illuminate\Queue\Failed\DatabaseFailedJobProvider padrão e especifique uma conexão com o MongoDB.

  • Ao usar um objeto DateTimeInterface , incluindo Carbon, em uma query, a biblioteca converte o DateTimeInterface em um objeto MongoDB\BSON\UTCDateTime . Essa conversão se aplica a objetos DateTimeInterface passados como filtros de query para o método where() ou como dados passados para os métodos insert() e update() .

    Para visualizar um exemplo que passa um objeto Carbon para o método DB::where() , consulte a seção Exemplo de correspondência de datas do guia Construtor de queries.

  • Nos resultados da consulta, a biblioteca converte objetos BSON UTCDateTime em classes de data Carbon , aplicando o fuso horário padrão.

    No v5.1, a biblioteca também executa essa conversão para os resultados do método Model::raw() antes de ativar uma instância do modelo.

  • id é um alias para o campo _id em documentos MongoDB e a biblioteca converte automaticamente entre id e _id ao executar query de dados. O objeto de resultado da query inclui um campo id para representar o campo _id do documento. Devido a esse comportamento, você não pode ter dois campos id e _id separados em seus documentos.

    No v5.1, a biblioteca também executa essa conversão para os resultados do método Model::raw() antes de ativar uma instância do modelo. Ao passar um filtro de query complexo, use o método DB::where() em vez de Model::raw().

  • Remove o suporte para a propriedade $collection . O código a seguir mostra como atribuir uma coleção MongoDB a uma variável em sua classe User em versões mais antigas em comparação com a 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 versão também modifica os métodos DB e Schema associados para acessar uma collection do MongoDB . O código a seguir mostra como acessar a coleção app_user em versões mais antigas em comparação com a 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 versão da biblioteca introduz as seguintes alterações de quebra:

  • A versão mínima do Laravel agora é 10.0. Para obter instruções sobre como atualizar sua versão do Laravel, consulte o Guia de atualização na documentação do Laravel.

  • O nome da dependência agora é "mongodb/laravel-mongodb". Certifique-se de que o nome da dependência em seu arquivo composer.json seja "mongodb/laravel-mongodb": "^4.0". Em seguida, execute composer update.

  • O namespace agora é MongoDB\Laravel\. Certifique-se de alterar o namespace de Jenssegers\Mongodb\ para MongoDB\Laravel\ em seus modelos e arquivos de configuração.

  • Remove o suporte para projetos que não sejam do Laravel.

  • Remove o suporte para a propriedade $dates . Certifique-se de alterar todas as instâncias de $dates para $casts em seus arquivos de modelo.

  • Model::unset($field) não persiste a alteração. Certifique-se de seguir todas as chamadas para Model::unset($field) com Model::save().

  • Remove o método Query\Builder::whereAll($column, $values) . Certifique-se de substituir todas as chamadas para Query\Builder::whereAll($column, $values) por Query\Builder::where($column, 'all', $values).

  • Query\Builder::delete() pode excluir um ou todos os documentos. Certifique-se de passar somente os valores 1 ou null para limit().

  • whereDate(), whereDay(), whereMonth(), whereYear() e whereTime() métodos agora utilizam operadores MongoDB em campos de data.

  • Adiciona o traço MongoDB\Laravel\Eloquent\MassPrunable . Certifique-se de substituir todas as instâncias de Illuminate\Database\Eloquent\MassPrunable por MongoDB\Laravel\Eloquent\MassPrunable em seus modelos.

  • Remove o suporte para os seguintes métodos Query\Builder :

    • toSql()

    • toRawSql()

    • whereColumn()

    • whereFullText()

    • groupByRaw()

    • orderByRaw()

    • unionAll()

    • union()

    • having()

    • havingRaw()

    • havingBetween()

    • whereIntegerInRaw()

    • orWhereIntegerInRaw()

    • whereIntegerNotInRaw()

    • orWhereIntegerNotInRaw()

Voltar

Próximos passos