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: Laravel’de Sıfır Kesinti ile Veri Tabanı Göçleri
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 » Laravel’de Sıfır Kesinti ile Veri Tabanı Göçleri

Yazılım

Laravel’de Sıfır Kesinti ile Veri Tabanı Göçleri

teknomers
Son güncelleme: 26 Haziran 2026 08:33
teknomers
Paylaş
Paylaş

Deploy İşlemi Sorunları

Smart Tech Devs’deki B2B SaaS platformunun ilk aşamalarında bir veritabanı şeması değişikliğini dağıtmak oldukça basit: uygulamayı bakım moduna alıyorsunuz, php artisan migrate komutunu çalıştırıyorsunuz, yeni kodu dağıtıyorsunuz ve uygulamayı çevrimiçi hale getiriyorsunuz. Ancak, binlerce aktif kurumsal kullanıcıya ulaştığınızda, 2 dakikalık bir bakım penceresi kabul edilemez hale gelir. Kesinti olmadan dağıtım yapmalısınız.

Mimari tuzak, uygulama canlıyken bir veritabanı kolonunu yeniden adlandırmayı veya silmeyi denediğinizde ortaya çıkar. Eğer first_name kolonunu full_name olarak değiştirirseniz, veritabanında yeni kolon adı ile eski PHP kodu arasında fiziksel bir kesinti süresi yaşanır. Bu süre zarfında, kaydolmaya çalışan herhangi bir kullanıcı, artık mevcut olmayan bir kolona veri eklemeye çalışan eski kod nedeniyle fatal 500 SQL hatası alır. Güvenle dağıtım yapmak için veritabanı değişikliklerini kod değişikliklerinden ayırmalısınız; bunu Expand and Contract Pattern (Genişlet ve Sıkıştır Deseni) ile gerçekleştiriyoruz.

Çözüm: Genişlet ve Sıkıştır Deseni

Bir kolonu tek bir yıkıcı adımda değiştirmek yerine, göç işlemini birkaç bağımsız ve güvenli dağıtım evresine yayıyoruz.

Aşama 1: Genişlet (Silmeden Ekle)

Öncelikle yeni full_name kolonunu ekleyen bir göç (migration) oluşturuyoruz, ama eski first_name kolonunu silmiyor ya da yeniden adlandırmıyoruz. Ayrıca, Laravel Model’imizi her iki kolona da veri yazacak şekilde güncelliyoruz.


// 1. Göç (Migration)
Schema::table('users', function (Blueprint $table) {
    $table->string('full_name')->nullable(); // Yeni kolonu güvenle ekleyin
});

// 2. Model Güncellemesi
class User extends Model
{
    // Veri senkronizasyonunu sağlamak için geçiş süresinde her iki kolona da yazın
    protected static function booted()
    {
        static::saving(function ($user) {
            if ($user->isDirty('first_name') || $user->isDirty('last_name')) {
                $user->full_name = $user->first_name . ' ' . $user->last_name;
            }
        });
    }
}

Bunu dağıtın. Uygulama tamamen çevrimiçi kalır. Yeni kullanıcılar artık her iki kolonda da veriye sahip olur.

Aşama 2: Taşı (Eski Veriyi Geri Yükle)

Uygulamamız her iki kolona da veri yazmaya başladığına göre, eski tarihli kayıtları geri yüklememiz gerekiyor. Bir arka plan Queue Job’u gönderiyor ya da Artisan komutunu çalıştırarak eski satırları sessizce güncellemek için tabloyu kilitlemeden çalışıyoruz.


// Arka planda kuyruklar veya Laravel Komutları aracılığıyla çalıştırın
User::whereNull('full_name')->chunkById(500, function ($users) {
    foreach ($users as $user) {
        $user->update(['full_name' => $user->first_name . ' ' . $user->last_name]);
    }
});

Aşama 3: Sıkıştır (Temizlik)

Günler veya haftalar sonra, full_name mantığının tüm kontrol panelinizde sorunsuz çalıştığını doğruladığınızda, son bir göç işlemi yazarsınız ve eski kolonları güvenle silersiniz. Ayrıca, Eloquent modelinizden tekrar eden yazım mantığını da kaldırırsınız.


// Son Temizlik Göçü
Schema::table('users', function (Blueprint $table) {
    $table->dropColumn(['first_name', 'last_name']);
});

Mühendislik ROI’si

Yıkıcı şema değişikliklerini Genişlet, Taşı ve Sıkıştır iş akışına bölerek, dağıtım kesinti süresini tamamen ortadan kaldırırsınız. Veritabanınız ve uygulama kodunuz hiçbir zaman çelişkili bir durumda olmaz, bu da büyük mimari yeniden yapılandırmaları, trafik zirve saatlerinde tek bir kullanıcı isteği düşürmeden eksiksiz bir şekilde gerçekleştirmenizi sağlar.

Kaynak: Orijinal Makale

Contents
  • Deploy İşlemi Sorunları
  • Çözüm: Genişlet ve Sıkıştır Deseni
    • Aşama 1: Genişlet (Silmeden Ekle)
    • Aşama 2: Taşı (Eski Veriyi Geri Yükle)
    • Aşama 3: Sıkıştır (Temizlik)
  • Mühendislik ROI’si
CodeIgniter ve Laravel: İnsan Odaklı Bir Karşılaştırma
Laravel Performansını Optimize Etme: Veri Tabanı, Önbellekleme ve Kuyruklar
Webhook Fırtınalarını Önlemek: Laravel’de İdempotans
Laravel ve Prism PHP: Yapay Zeka Modelleri ile Çalışmanın Modern Yöntemi
PHP’de Kesintisiz Bulut Depolama: Modern Dropbox Entegrasyonu İçin Rehber
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale 2026 Prime Day’de Kaçırılmaması Gereken Eylem Kamerası Fırsatları!
Sonraki Makale Riot Vanguard, sürekli açık gereksinimini kaldırdı; yeni mod Windows 11 şartı istiyor

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Apple ve Audi Çalışanları’ndan Ay Tekerlekli Araca Dayanan Lüks Elektrikli Araç
Genel
Riot Vanguard, sürekli açık gereksinimini kaldırdı; yeni mod Windows 11 şartı istiyor
Donanım
2026 Prime Day’de Kaçırılmaması Gereken Eylem Kamerası Fırsatları!
Genel
B&H’de 32GB DDR5 RAM fırsatları: Ryzen 7 ve anakart ile tasarruf edin
Donanım
Amazon Prime Day 2026’da Bulduğum En İyi iPad Fırsatı!
Genel
Yeni Nintendo Switch 2, yeni müşterilere 399$, dönüş yapanlara 419$!
Donanım
//

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?