Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba arkadaşlar laravelde biraz yeniyim ve migrate konusu biraz kafamı karıştırıyor. Sağlıklı bir proje yapmak ve ileride rahatça proje üzerinde çalışmak için migrate önemli bir konu sanırım. Ancak migrate yapıları hakkında aklıma takılan bazı sorular var.

Öncelikle diyelim ki müşteriler tablosu oluşturduk schema içerisinde tablo yapısını belirttik ve php artisan migrate komutu ile veritabanına ekledik. Daha sonra ben bu tabloya yeni kolonlar eklemek istersem aynı migrate dosyası içerisinde değişiklik yapıp (up komutu içerisindekileri tamamen değiştirip) o şekilde yeniden mi migrate edeceğim yoksa php artisan make:migration komutu ile yeni dosya oluşturup bunun içerisinde mi yapacağım değişiklikleri.

Eğer yeni dosya içerisinde bu değişiklikleri yapacak olursam ileride projeyi aynen alıp farklı bir sunucuda kurmam gerekirse php artisan:migrate dediğim zaman hepsi sorunsuz bir şekilde gelecek mi yoksa dosyaları yeni haliyle birleştirmem mi gerekecek.

    Proje canlıda değilse, herhangi bir deployment aşamasından geçmiyorsa, eğer sadece geliştirme ortamında çalışıyorsa direkt root migration dosyasında düzenleme yapıyorum. Eğer herhangi bir deployment aşamasından geçecekse ve canlı sağlanan veriye etkisi oluyorsa ayrı migration dosyaları ile düzenliyorum. Daha önce herhangi bir sorun yaşamadım.

      murat889

      Bende yeniyim fakat bildiğim kadar bilgi veriyim, migration dosyaları veritabanını hep aynı tipte kullanabilmek için güzel bir sistem, nereye taşırsanız taşıyın migrate ettiğinizde tüm tablolar, kolonları belirlediğimiz tiplerde geliyor.

      Eğer içerisinde data yoksa güncelleme yaptıktan sonra bu şekilde php artisan migrate:fresh tüm tabloların yeniden yüklenmesini sağlayabilirsiniz. Tabi tabloların içerisindeki tüm verileri siliyor bu sistem, o yüzden önemli veriler varsa kullanmayın.

      Şöyle bir yöntemde var örneğin user tablosuna yeni bir kolon ekleyeceksiniz diyelim
      php artisan make:migration add_status_to_users_table gibi bir komutla migration oluşturup içine eklemek istediğiniz ek kolonu yazıp migrate edebilirsiniz. Bu komut örnek olarak users tablosuna status kolonunu eklemek için kullanılır ve tekrar migrate edebilirsiniz. Sonrasında böyle bir şema geliyor. İçerisinide örnek olarak böyle doldurabilirsiniz.

      Schema::table('users', function (Blueprint $table) {
      $table->boolean('status')->default(1);
      });

      Cevaplarınız için teşekkür ederim. Aklımda halen tam oturmayan kısımlar var maalesef. Daha öncesinde bir projemde kullanmaya çalışmıştım fakat tablo içerisinde veriler varken yeni bir tablo veya sütun eklemem gerektiğinde migrate etmem gerek canlıda ve herhangi bir sorun olursa verilere zarar gelmeden yanlıştan dönülebilir mi?

      mkeremcansev Ayrıca hocam canlıda yapacağınız zaman aynı dosya içerisinde yapıyorum demişsin. mevcut tabloyu düzenledikten ve güncelledikten sonra migrate dosyasını eski haline getirip mi kaydediyorsun sanki ilk kez o tabloyu sıfırdan oluşturuyor gibi.

        murat889 "aynı" değil "ayrı" yazıyor 😃 Ayrı migration dosyasında düzenleme yapıyorum.

          mkeremcansev Biraz uykusuzum hocam yanlış okumuşum orayı 😃 Bir proje geliştireceğim ve canlıda sorunla karşılaşır verileri kaybedersem diye gözüm korkuyor açıkçası direkt migrationu aradan çıkartıp eski usul veritabanına kendim manuel eklesem bir kaybım veya ilerisi için sorun olur mu?

            murat889 Canlı veri ile oynanılmaması gerekiyor, yeni düzenlemelerde sütun çıkartmayı değil de sütun eklemeyi baz alıp nullable verirseniz herhangi bir sorun ile karşılaşmazsınız diye düşünüyorum. Bu şekilde tüm verilerin yeni eklenen sütun tarafında NULL olmasını sağlarsınız ve veri kaybı yaşamazsınız.