Veritabanındaki son ID'nin çoğu zaman muamma olmasının en büyük sebebi ise, veritabanındaki id bilgisini auto_increment yapmamızdan kaynaklanmaktadır. Bu yazıda, bir PHP framework'ü olan Laravel'de, veritabanı tablosundaki son verinin ID'sinin nasıl çekileceğini göstereceğim. Laravel'deki basit fonksiyonları kullanarak bunu 2 şekilde gerçekleştirebilmek mümkün. Bu yöntemlerden bir tanesi, veri eklendikten sonra, son verinin ID bilgisini çekmek. Diğer bir yöntem ise veri, veritabanına kaydolduktan sonra geri dönüş değeri olarak, eklenen o verinin ID değerini almak.
Yöntemlerden ilkinde normal yollarla veriyi veritabanına kaydettiğinizi varsayalım. Veri kayıt olduktan sonra last() fonksiyonu ile son eklemiş olduğunuz verinin ID bilgisini elde etmeniz mümkün olabilmektedir.
Örnek kullanım :
$idBilgisi= Model::all()->last()->ID;
İkinci yöntem ise, veriyi hem veritabanına kaydederken aynı zamanda kaydettiğiniz verinin ID bilgisini elde edebiliyorsunuz. Bu yöntem sadece, veritabanınızdaki id kolonunuz auto_increment ise çalışır. Çünkü siz veriyi veritabanına eklediğiniz sırada, auto_increment özelliğinden dolayı verinize otomatik olarak bir ID atanmış oluyor ve siz o atanan ID'yi geri dönüş değeri olarak almış oluyorsunuz.
Örnek kullanım :
$kullanici = new KullaniciBilgileri();
$kullanici_id = $kullanici->insertGetId($dataKullanici);
$dataKullanici değişkeni burada bir dizidir. Bu dizi, veritabanına eklenecek olan verileri tutmaktadır. Örneğin Laravel'deki only fonksiyonu ile formdan post edilen verileri alıp bir dizide tuttuğunuzu varsayın. Nasıl ki veritabanına veri kaydederken fill() fonksiyonu içerine verilerin yer aldığı bir dizi değişkeni yazıyorsak, buradaki insertGetId ifadesi de aynı mantık ile çalışıyor. Tek farkları, fill() fonksiyonu geri dönüş değeri döndermezken, insertGetId() fonksiyonu bize geri dönüş değeri olarak eklemiş olduğumuz verinin ID bilgisini dönderiyor. Örneğe göre bu id bilgisini ise $kullanici_id değişkeninde tuttuğumuzu varsaydık.
İkinci yöntem, göze daha pratik ve daha akılcı gelse bile her iki yöntemin de farklı durumlarda farklı avantajları vardır. Her iki yöntemi de anladıysanız eğer, problemlerinizde hangisini kullanacağınız konusunda en uygun kararı kendiniz verebilirsiniz. Konuyla ilgili yorumlarınızı aşağıdaki yorum formuna yazabilirsiniz.
Güzel ve yararlı bir makale olmuş, teşekkürler.
YanıtlaSilAli bey bu konuyla alakası yok ama birşey soracaktım bilgisayar da ddr4 ram var..bu ramler hdd gibi veri depolama yapmaz değil mi başka bir bilgisayara takılıp direk kullanılabilir değil mi?
YanıtlaSilbu arada twitter hesabınız aktif mi acaba ekledim
RAM ve depolama hafızaları arasındaki farkı şuradaki yazımda : http://www.blogkafem.net/2014/02/ram-ile-depolama-hafizalari-arasi-fark.html
Sildetaylı olarak anlattım. Linke tıklayarak o yazıyı okursanız eğer, aklınız takılan sorulara cevap bulursunuz.