v2.5.2
Giriş yap

Laravel'de Verileri Kaybetmeden Migration Güncellemek

obey00
593 defa görüntülendi

Selamlar. Veritabanında kayıtlı dataları kaybetmeden, tablolarda yaptığımız değişiklikleri güncellemenin bir yolu yok mu?
Örneğin: id, baslik, aciklama alanlarından oluşan bir tablonun sonuna sadece "statu" diye bir alan eklemek istiyorum;
veya işte açıklama kısmına varsayılan bir değer atamak istiyorum... gibi

bu tarz durumlar için verileri kaybetmeden migrationla oynamanın veya farklı bir yolu yordamı var mıdır?

Kısacası: Her ekleyeceğimiz tablo alanı için, veya tablo alanlarına atayacağımız default, nullable vb. gibi özellikler için devamlı "make:migration" mu yapmalıyız; varsayılan migration dosyamız üzerinden ilerlemek yerine her yeni düzenleme için farklı migrationlar mı yapmalıyız? (bu şekilde daha mı kullanışlı ve tercih edilen durum oluyor?

Cevap yaz
Cevaplar (4)
fatihozpolat
1039 gün önce

projede bir tablo oluşturduğunda php artisan make:migration create_users_table komutunu çalıştırdığını varsayıyorum.
Bu durumda users tablosuna yeni bir sütün eklemek istersen php artisan make:migration add_eklenecek_kolon_to_users_table şeklinde bir komut çalıştırman gerekiyor.

Aslında arkadaş kaynağı ile cevaplamış ama yine de yazmak istedim.

Bunun dışında seederlar projeyi temizlediğinde 100 tane üye ile oluşturmak gibi bir çok konuda yardımcı olur ve kullanılan yöntem budur.

ayriyeten ilişkili durumlarda migrationların ve seederlerın ebeveynden çocuğa sırasıyla çalışması gerekir yoksa hata meydana gelir.

obey00
1039 gün önce

@soulfly579 aslında denemelik veri girmekten ziyade sistemi kodladıkça test ediyorum; ancak proje belli bir süre oturduktan sonra (özellikle gruplar halinde çalışırken) elde demo veriler tutulması güzel olur. (Örneğin: üyeler tablosunda 100 tane üyeyle birlikte projenin açılması gibi). Bu durumda mı seeder kullanılıyor?

soulfly579
1039 gün önce

@makifgokce adlı kişinin cevabı gayet net olmuş ama denem süreçlerinde manuel veri girmek yerine seeder ve factory kullanman güzel bir alışkanlık olur. Migrate ettiğin zaman da tek komut ile verilerin geri gelir :)

makifgokce
1039 gün önce

Schema::create() yerine Schema::table() kullanarak yapabilirsin.
down() fonksiyonu içerisindeki Schema::dropIfExists() fonksiyonu siliyor tabloyu
https://dev.to/mahmudulhsn/update-existing-table-with-migration-without-losing-in-data-in-laravel-fb1