Insira documentos
Nesta página
Visão geral
Neste guia, você aprenderá a inserir documentos nas coleções do MongoDB a partir do seu aplicação Laravel usando o Laravel MongoDB.
Ao inserir os documentos, certifique-se de que os dados não violem nenhum índice exclusivo da coleta. Ao inserir o primeiro documento de uma collection ou criar uma nova collection, o MongoDB cria automaticamente um índice único no campo _id
.
Para obter mais informações sobre como criar índices nas collections do MongoDB usando o construtor de esquemas Laravel, consulte a seção Gerenciar índices da documentação do Schema Builder.
Para saber mais sobre os modelos Eloquent na integração com o Laravel, consulte a seção Modelos Eloquent .
Modelo de amostra
As operações deste guia referenciam a seguinte classe de modelo do Eloquent :
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Concert extends Model { protected $connection = 'mongodb'; protected $fillable = ['performer', 'venue', 'genres', 'ticketsSold', 'performanceDate']; protected $casts = ['performanceDate' => 'datetime']; }
Dica
O atributo $fillable
permite utilizar a atribuição em massa Laravel para inserir operações. Para saber mais sobre atribuição em massa, consulte Personalizar Atribuição de Massa na documentação da Classe de Modelo Eloquent.
O $casts
atributo instrui o Laravel a converter atributos em tipos de dados comuns. Para saber mais, consulte Fundição de atributos na documentação do Laravel.
Inserir um documento
Os exemplos nesta seção mostram como utilizar os métodos save()
e create()
Eloquent para inserir uma instância de um modelo Concert
como um documento MongoDB .
Método salvar()
Quando o método save()
for bem-sucedido, você poderá acessar a instância do modelo na qual chamou o método.
Se a operação falhar, a instância do modelo receberá null
.
Este código de exemplo executa as seguintes ações:
Cria uma nova instância do modelo
Concert
Atribui valores de string aos campos
performer
evenue
Atribui uma array de strings ao campo
genre
Atribui um número ao campo
ticketsSold
Atribui uma data ao campo
performanceDate
usando o pacoteCarbon
Insere o documento chamando o método
save()
$concert = new Concert(); $concert->performer = 'Mitsuko Uchida'; $concert->venue = 'Carnegie Hall'; $concert->genres = ['classical']; $concert->ticketsSold = 2121; $concert->performanceDate = Carbon::create(2024, 4, 1, 20, 0, 0, 'EST'); $concert->save();
Você pode recuperar o valor _id
do documento inserido acessando o membro id
do modelo, como mostrado no seguinte exemplo de código:
$insertedId = $concert->id;
Método create()
Se você ativar a atribuição em massa definindo os atributos $fillable
ou $guarded
, poderá usar o método create()
do modelo Eloquent para executar a inserção em uma única chamada, conforme mostrado no exemplo a seguir:
$insertResult = Concert::create([ 'performer' => 'The Rolling Stones', 'venue' => 'Soldier Field', 'genres' => [ 'rock', 'pop', 'blues' ], 'ticketsSold' => 59527, 'performanceDate' => Carbon::create(2024, 6, 30, 20, 0, 0, 'CDT'), ]);
Para saber mais sobre a extensão da do PHP API Cloud , consulte o Charts Github Repositório .
Insira vários documentos
Este exemplo mostra como utilizar o método insert()
Eloquent para inserir múltiplas instâncias de um modelo Concert
como documentos MongoDB . Esse método de inserção em massa reduz o número de chamadas que seu aplicação precisa fazer para salvar os documentos.
Quando o método insert()
é bem-sucedido, ele retorna o valor 1
. Se falhar, lança uma exceção.
O exemplo a seguir salva vários modelos em uma única chamada, passando-os como uma array para o método insert()
:
$data = [ [ 'performer' => 'Brad Mehldau', 'venue' => 'Philharmonie de Paris', 'genres' => [ 'jazz', 'post-bop' ], 'ticketsSold' => 5745, 'performanceDate' => new UTCDateTime(Carbon::create(2025, 2, 12, 20, 0, 0, 'CET')), ], [ 'performer' => 'Billy Joel', 'venue' => 'Madison Square Garden', 'genres' => [ 'rock', 'soft rock', 'pop rock' ], 'ticketsSold' => 12852, 'performanceDate' => new UTCDateTime(Carbon::create(2025, 2, 12, 20, 0, 0, 'CET')), ], ]; Concert::insert($data);
Observação
Este exemplo envolve as datas no MongoDB\BSON\UTCDateTime classe para convertê-lo em um tipo que o MongoDB possa serializar porque o Laravel ignora a conversão de atributos em operações de inserção em massa.
Informações adicionais
Para visualizar exemplos de código executáveis que demonstram como inserir documentos usando a integração com o Laravel, consulte os seguintes exemplos de uso:
Para saber como modificar dados que já estão no MongoDB, consulte o guia Modificar documentos.