Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Eloquent’in increment() Fonksiyonunun İçinde Bulduklarım
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Eloquent’in increment() Fonksiyonunun İçinde Bulduklarım

Yazılım

Eloquent’in increment() Fonksiyonunun İçinde Bulduklarım

teknomers
Son güncelleme: 2 Nisan 2026 13:55
teknomers
Paylaş
Paylaş

Laravel uygulamalarında firstOrNew() ve increment() metodlarını kullanırken beklenmeyen bir davranışla karşılaşmanız mümkündür. Bu makalede, bu iki metodun etkileşimlerini bir envanter takip uygulaması üzerinden ele alacağız.

Amacımız, yeni gelen bir sevkiyat ile mevcut ürünün stok sayısını artırmak. Eğer ürün veritabanında yoksa, öncelikle yeni bir kayıt yaratılacak. firstOrNew() metodunu kullanmak bu iki durumu da ele almak için uygun görünüyordu.

Eğer bu iki metodu daha önce birlikte kullanmışsanız, aşağıda yazılanları bilmek faydalı olacaktır.

$incomingShipment = $inventoryItem::firstOrNew(['product_name' => 'Metallic Coffee Mug']);
        $incomingShipment->increment('stock_count', 50);
        

“Metallic Coffee Mug” veritabanında mevcut değildi. Dolayısıyla firstOrNew() yeni, kaydedilmemiş bir model örneği döndürdü — hiçbir id yok, birincil anahtar yok ve $model->exists = false.

Ardından increment() metodunu çağırdım.

Query Log’unda Neler Vardı

Veritabanında başlangıçta üç ürün bulunuyordu:

product_namestock_count
macbook air M410
DELL monitor5
Varmilo Keyboard3

increment('stock_count', 50) çağrısının ardından, her bir satır güncellendi:

product_namestock_count
macbook air M460
DELL monitor55
Varmilo Keyboard53

Hiçbir hata veya uyarı yoktu. Coffee Mug hâlâ mevcut değil — increment() yeni bir kayıt eklemedi.

increment() Nasıl Çalışır

Kaynağa incelediğimizde, increment() metodunun arka planda incrementOrDecrement() metodunu çağırdığını ve bunun $this->exists kontrolünü yaptığını göreceğiz.

Eğer exists = false ise, model henüz kaydedilmemiş demektir — ve sorguyu WHERE ifadesi olmadan çalıştırır. Böylece tüm tablo etkilenir.

Eğer exists = true ise, sorguyu modelin birincil anahtarına yönelik sınırlar. Bu genellikle beklenen davranıştır.

firstOrNew() hiçbir kayıt bulamazsa kaydedilmemiş bir model döndürür. Dolayısıyla exists değeri false olur ve increment() de sınırlandırılmış sorgu yolunu alır.

Bu İki Metodu Doğru Şekilde Kullanma

exists özelliğini bildiğinizde, bu davranış tam anlamıyla anlaşılır bir hâl alır. Çözüm, increment() çağrısından önce modelin kaydedilmesini sağlamaktır.

$incomingShipment = $inventoryItem::firstOrNew(['product_name' => 'Metallic Coffee Mug']);

        if (! $incomingShipment->exists) {
            $incomingShipment->stock_count = 0;
            $incomingShipment->save();
        }

        $incomingShipment->increment('stock_count', 50);
        

Alternatif olarak, firstOrCreate() metodunu kullanarak kayıt doğrudan oluşturulabilir; böylece increment() her zaman bir id ile çalışır.

Eloquent’un iç yapısına daldıkça, exists bayrağı etrafında nasıl tutarlı bir biçimde tasarlandığını görüyorum. Bu küçük özellik, birçok metodun sessizce bağımlı olduğu bir özelliktir.

Kaynak: Orijinal Makale

Contents
  • Query Log’unda Neler Vardı
  • increment() Nasıl Çalışır
  • Bu İki Metodu Doğru Şekilde Kullanma
Veri Kaybını Önleyin: Laravel’deki Yarış Şartlarını Nasıl Düzeltirsiniz
FFmpeg ve Laravel Kullanarak Günlük 30GB Video Depolama Nasıl Azaltılır?
Joomla, WordPress ve PrestaShop Ajansları İçin İzleme SaaS’ı Nasıl Geliştirdim
Bir M1 Pro MacBook ile Parallels Desktop’ta tekrar oyun oynamayı deniyoruz
PHP’de Kesintisiz Bulut Depolama: Modern Dropbox Entegrasyonu İçin Rehber
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Yeni Oyunları Keşfetmeyi Kolaylaştıran Steam Güncellemesi
Sonraki Makale Intel, İrlanda Ortak Girişimdeki %49 Hissesini Geri Alarak Fab 34’ün Kontrolünü Ele Geçirdi

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

DDR4 bellek ve anakart üretimi yeniden başlıyor, DDR5’siz geleceğe hazırlık
Donanım
AI token maliyetleri büyük bir sorun haline geliyor, OpenAI çözümler arıyor
Donanım
Elden Ring: Tarnished Edition Switch 2 İçin Ön Sipariş Fırsatları
Oyun
LinkedIn üzerinden Batılıları tuzağa düşüren Çin casusları
Genel
AMD Helios MI455X AI platformu lanse edildi, Ethernet sınırlamaları var
Donanım
Kurucular Fonu, Sam Altman ve Palmer Luckey’in Yer Aldığı Heyecan Verici Oyun Şovunu Başlattı
Genel
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?