Laravel'de Verileri Kaybetmeden Migration Güncellemek
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?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
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.
@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?
@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 :)
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