Saat ini saya menggunakan kode di bawah ini untuk memasukkan data dalam tabel:
<?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);
}
}
Saya ingin mengembalikan ID terakhir yang dimasukkan tetapi saya tidak tahu bagaimana cara mendapatkannya.
Salam!
0
. Dalam kasus saya id adalah string (UUID) dan agar ini berfungsi saya harus menambahkanpublic $incrementing = false;
model saya.aid
dan saya telah mengatur$incrementing = false;
tetapi tidak kembali juga!xdazz benar dalam hal ini, tetapi untuk kepentingan pengunjung masa depan yang mungkin menggunakan
DB::statement
atauDB::insert
, ada cara lain:sumber
$id = DB::table('someTable')->insertGetId( ['field' => Input['data']);
timestamps
menggunakaninsertGetId
, silakan cek di siniinsertGetId
hanya berfungsi jika kolom id sebenarnya disebut "id".Bagi siapa pun yang juga menyukai cara Jeffrey Way menggunakan
Model::create()
dalam tutorial Laracasts 5-nya, di mana ia hanya mengirim Permintaan langsung ke dalam basis data tanpa secara eksplisit mengatur setiap bidang dalam pengontrol, dan menggunakan model$fillable
untuk tugas massal (sangat penting, bagi siapa pun yang baru dan menggunakan begini): Saya membaca banyak orang menggunakaninsertGetId()
tetapi sayangnya ini tidak menghormati$fillable
daftar putih sehingga Anda akan mendapatkan kesalahan dengan mencoba memasukkan _token dan apa pun yang bukan bidang dalam database, akhirnya mengatur hal-hal yang ingin Anda filter, dll. Itu membuat saya kesal, karena saya ingin menggunakan penugasan massal dan secara keseluruhan menulis lebih sedikit kode bila memungkinkan. Untungnyacreate
metode Eloquent hanya membungkus metode penyimpanan (apa yang disebutkan oleh @xdazz di atas), sehingga Anda masih dapat menarik ID yang terakhir dibuat ...sumber
$new = Company::create($input);
return redirect('company/'.$new->id);
Jika tabel memiliki id penambahan otomatis, gunakan metode insertGetId untuk menyisipkan catatan dan kemudian ambil ID:
Rujuk: https://laravel.com/docs/5.1/queries#inserts
sumber
**** Untuk Laravel ****
Pertama-tama buat objek, Kemudian atur nilai atribut untuk objek itu, Lalu simpan catatan objek, dan kemudian dapatkan id yang disisipkan terakhir. seperti
// Sekarang Mendapatkan id yang Terakhir Disisipkan
sumber
Di laravel 5: Anda bisa melakukan ini:
sumber
Ini sebuah contoh:
sumber
Ini bekerja untuk saya di laravel 4.2
sumber
Berikut ini cara mendapatkan id yang dimasukkan terakhir di Laravel 4
sumber
Gunakan
insertGetId
untuk memasukkan dan dimasukkanid
pada saat yang samaDari dok
Oleh
Model
Oleh
DB
Untuk detail lebih lanjut: https://laravel.com/docs/5.5/queries#inserts
sumber
Setelah menyimpan model, instance yang diinisialisasi memiliki id:
sumber
Untuk memasukkan ()
Contoh:
sumber
Dalam Laravel 5.2 saya akan membuatnya sebersih mungkin:
sumber
Setelah
$data->id
akan memberi Anda id yang dimasukkan,Catatan: Jika nama kolom autoincrement Anda adalah sno maka Anda harus menggunakan
$data->sno
dan tidak$data->id
sumber
Setelah menyimpan catatan dalam basis data, Anda dapat mengakses id dengan
$data->id
sumber
Untuk Laravel, Jika Anda memasukkan catatan baru dan memanggil
$data->save()
fungsi ini, jalankan permintaan INSERT dan kembalikan nilai kunci utama (mis. Id secara default).Anda dapat menggunakan kode berikut:
sumber
sumber
Kamu bisa melakukan ini:
sumber
Untuk mendapatkan id yang dimasukkan terakhir dalam database, Anda dapat menggunakan
di sini $ lastInsertedId akan memberi Anda id kenaikan otomatis yang dimasukkan terakhir.
sumber
Cara terpendek mungkin adalah panggilan
refresh()
pada model:sumber
Meskipun pertanyaan ini agak tanggal. Solusi cepat dan kotor saya akan terlihat seperti ini:
Tapi saya kira itu rentan terhadap kondisi balapan pada database yang sangat sering dikunjungi.
sumber
Anda juga dapat mencoba seperti ini:
sumber
Menggunakan Model Eloquent
Menggunakan Pembuat Kueri
sumber
Setelah Menyimpan
$data->save()
. semua data didorong masuk$data
. Karena ini adalah objek dan baris saat ini baru saja disimpan di dalam$data
. jadi yang terakhirinsertId
akan ditemukan di dalam$data->id
.Kode respons akan:
sumber
Metode opsional adalah:
Sumber dari Laravel versi 5.8
sumber
Anda bisa mendapatkan id yang dimasukkan terakhir dengan objek yang sama dengan yang Anda sebut metode simpan;
Jadi Anda cukup menulis:
sumber
Anda dapat dengan mudah mengambil Id rekaman yang dimasukkan terakhir
Ini adalah trik yang luar biasa untuk mengambil Id dari catatan yang dimasukkan terakhir di DB.
sumber
$user->id
cukup setelah membuat untuk mendapatkan id yang dimasukkan.sumber
Menggunakan Model Eloquent
Menggunakan Pembuat Kueri
Untuk metode lainnya untuk mendapatkan id Baris Terakhir Dimasukkan di Laravel: http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel
sumber
Anda dapat menggunakan
$this
variabel konstruktor untuk mencapai "Id Terakhir Dimasukkan Menggunakan Laravel Eloquent" (tanpa menambahkan kolom tambahan) dalam fungsi atau pengontrol saat ini.sumber