2013-04-20 19 views
5

CreateItemsTable adı verilen bir geçişim var; Onu koştum, masamda eşyalarım var, şimdi masaya yeni bir alan eklemem gerekiyor. Göçmen dosyasına bir alan ekleyemiyorum ve migrate:refresh çünkü içindeki veriye ihtiyacım var.Laravel Migration, veriler tablo içinde olduktan sonra ekleniyor mu?

Bir alan eklemek için başka bir geçiş yapmam gerekiyor mu? Gelişimdeki şeyleri test ederken karmaşaya benziyor, alanları çok değiştirebilirim. Göçmenlerin sadece PhpMyAdmin'den daha temiz olup olmadıklarından emin değilim ... ya da belki onları anlamıyorum.

cevap

8

Evet, her seferinde bir tabloyu değiştirmeniz gerektiğinde, bunun için yeni bir geçiş oluşturursunuz. Bu tüm göçmenler noktası. Ortak bir ortamda geliştirdiğinizde ve uzaktaki bir depodan bazı değişiklikleri geri yüklediğinizde, yapmanız gereken şeylerden biri (bir veritabanıyla çalışıyorsa) diğer geliştiricilerin oluşturmuş olabileceği herhangi bir geçişi çalıştırır. Bu veritabanlarınızı senkronize tutar.

Bazen sütunlar bırakıp ekleyebileceğinizden emin olun, ancak büyük bir sorun yoktur.

İlk kez bir tablo oluşturduğunuzda, muhtemelen Schema::create() kullanıyorsunuzdur. Bu tablodaki sonraki tüm geçişler Scheme::table()'u kullanmalıdır. İlk önce tabloyu oluşturmaya çalışmadığı sürece aynı parametreleri kabul eder.

+0

Ahh, görüyorum, bu yüzden git repo'unuzun geçişlerde tüm veritabanı şeması olacak, çok havalı! –

+3

Tam olarak. Göç komut dosyası, geçişlerin yeni olduğunu bilir ve bu nedenle veritabanına önceden uygulanmış olanları yeniden çalıştırmaz. –

+1

Tek bir geçişi geri alabilir veya yenileyebilir miyiz? Üretim DB'sinde diyelim ki kullanıcı verilerine sahibiz ve göç ediyoruz: geri alma veya geçiş: yenileyin, sonra tüm verileri kaybedeceğiz. – Sameer

İlgili konular