Atualizar versão da biblioteca
Nesta página
Visão geral
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.
Como fazer a atualização
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.
Mudanças de última hora
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.
Versão 5.x: mudanças importantes
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 classeIlluminate\Queue\Failed\DatabaseFailedJobProvider
padrão e especifique uma conexão com o MongoDB.MongoDB\Laravel\Queue\Failed\MongoFailedJobProvider
. Em vez disso, use a classeIlluminate\Queue\Failed\DatabaseFailedJobProvider
padrão e especifique uma conexão com o MongoDB.
Ao usar um objeto
DateTimeInterface
, incluindoCarbon
, em uma query, a biblioteca converte oDateTimeInterface
em um objetoMongoDB\BSON\UTCDateTime
. Essa conversão se aplica a objetosDateTimeInterface
passados como filtros de query para o métodowhere()
ou como dados passados para os métodosinsert()
eupdate()
.Para visualizar um exemplo que passa um objeto
Carbon
para o métodoDB::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 dataCarbon
, 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 entreid
e_id
ao executar query de dados. O objeto de resultado da query inclui um campoid
para representar o campo_id
do documento. Devido a esse comportamento, você não pode ter dois camposid
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étodoDB::where()
em vez deModel::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 classeUser
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
eSchema
associados para acessar uma collection do MongoDB . O código a seguir mostra como acessar a coleçãoapp_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);
Alterações significativas na versão 4.x
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 arquivocomposer.json
seja"mongodb/laravel-mongodb": "^4.0"
. Em seguida, executecomposer update
.O namespace agora é
MongoDB\Laravel\
. Certifique-se de alterar o namespace deJenssegers\Mongodb\
paraMongoDB\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 paraModel::unset($field)
comModel::save()
.Remove o método
Query\Builder::whereAll($column, $values)
. Certifique-se de substituir todas as chamadas paraQuery\Builder::whereAll($column, $values)
porQuery\Builder::where($column, 'all', $values)
.Query\Builder::delete()
pode excluir um ou todos os documentos. Certifique-se de passar somente os valores1
ounull
paralimit()
.whereDate()
,whereDay()
,whereMonth()
,whereYear()
ewhereTime()
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 deIlluminate\Database\Eloquent\MassPrunable
porMongoDB\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()