Atualmente, estou usando o código abaixo para inserir dados em uma tabela:
<?php
public function saveDetailsCompany()
{
$post = Input::All();
$data = new Company;
$data->nombre = $post['name'];
$data->direccion = $post['address'];
$data->telefono = $post['phone'];
$data->email = $post['email'];
$data->giro = $post['type'];
$data->fecha_registro = date("Y-m-d H:i:s");
$data->fecha_modificacion = date("Y-m-d H:i:s");
if ($data->save()) {
return Response::json(array('success' => true), 200);
}
}
Quero retornar o último ID inserido, mas não sei como obtê-lo.
Atenciosamente!
0
. No meu caso, o id era uma string (UUID) e, para isso funcionar, tive que adicionarpublic $incrementing = false;
no meu modelo.aid
e eu configurei,$incrementing = false;
mas ele não retornou também!O xdazz está certo nesse caso, mas para o benefício de futuros visitantes que possam estar usando
DB::statement
ouDB::insert
, existe outra maneira:fonte
$id = DB::table('someTable')->insertGetId( ['field' => Input['data']);
timestamps
usandoinsertGetId
, gentilmente verificar aquiinsertGetId
só funciona se as colunas de identificação forem realmente chamadas de "id".Para quem também gosta de como Jeffrey Way usa
Model::create()
em seus tutoriais do Laracasts 5, onde ele envia a solicitação diretamente para o banco de dados sem definir explicitamente cada campo no controlador e usar o modelo$fillable
para atribuição em massa (muito importante para quem é novo e usa desta maneira): eu leio muitas pessoas usando,insertGetId()
mas infelizmente isso não respeita a$fillable
lista de permissões, então você receberá erros ao tentar inserir _token e qualquer coisa que não seja um campo no banco de dados, acabando definindo as coisas que deseja filtro etc. Isso me chateou, porque eu quero usar a atribuição em massa e escrever menos código quando possível. Felizmente, ocreate
método do Eloquent apenas envolve o método save (o que @xdazz citou acima), para que você ainda possa obter o último ID criado ...fonte
$new = Company::create($input);
return redirect('company/'.$new->id);
Se a tabela tiver um ID de incremento automático, use o método insertGetId para inserir um registro e recupere o ID:
Consulte: https://laravel.com/docs/5.1/queries#inserts
fonte
**** Para o Laravel ****
Primeiro, crie um objeto, defina o valor dos atributos para esse objeto, salve o registro do objeto e obtenha o último ID inserido. tal como
// Agora obtendo o último ID inserido
fonte
No laravel 5: você pode fazer isso:
fonte
Aqui está um exemplo:
fonte
Isso funcionou para mim no laravel 4.2
fonte
Aqui está como podemos obter o último ID inserido no Laravel 4
fonte
Use
insertGetId
para inserir e ser inseridoid
ao mesmo tempoDo doc
De
Model
De
DB
Para mais detalhes: https://laravel.com/docs/5.5/queries#inserts
fonte
Após salvar o modelo, a instância inicializada possui o ID:
fonte
Para insert ()
Exemplo:
fonte
No Laravel 5.2, eu o tornaria o mais limpo possível:
fonte
Depois de
$data->id
fornecerá o ID inserido,Nota: Se o nome da coluna de incremento automático for sno , você deverá usar
$data->sno
e não$data->id
fonte
Depois de salvar um registro no banco de dados, você pode acessar id por
$data->id
fonte
Para o Laravel, se você inserir um novo registro e chamar
$data->save()
essa função, executará uma consulta INSERT e retornará o valor da chave primária ( por exemplo, id por padrão).Você pode usar o seguinte código:
fonte
fonte
Você consegue fazer isso:
fonte
Para obter o último ID inserido no banco de dados Você pode usar
aqui $ lastInsertedId fornece o último ID de incremento automático inserido.
fonte
A maneira mais curta é provavelmente uma chamada do
refresh()
modelo:fonte
Embora esta questão seja um pouco datada. Minha solução rápida e suja ficaria assim:
Mas acho que é vulnerável às condições de corrida em bancos de dados altamente freqüentados.
fonte
Você também pode tentar assim:
fonte
Usando o modelo eloquente
Usando o Query Builder
fonte
Após salvar
$data->save()
. todos os dados são enviados para dentro$data
. Como este é um objeto, a linha atual é salva recentemente recentemente$data
. então o últimoinsertId
será encontrado lá dentro$data->id
.O código de resposta será:
fonte
O método opcional será:
Fonte da versão Laravel 5.8
fonte
Você pode obter o último ID inserido com o mesmo objeto que você chama de método save;
Então você pode simplesmente escrever:
fonte
Você pode buscar facilmente o último ID do registro inserido
É um truque incrível para buscar o ID do último registro inserido no banco de dados.
fonte
$user->id
suficiente após a criação para obter o ID inserido.fonte
Usando o modelo eloquente
Usando o Query Builder
Para obter mais métodos para obter o ID da última linha inserida no Laravel: http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel
fonte
Você pode usar a
$this
variável construtora para obter "Última identificação inserida usando o Laravel Eloquent" (sem adicionar nenhuma coluna extra) na função ou controlador atual.fonte