Symfony + Doktrin üzerine inşa edilmiş bir uygulama için yeni modeller eklemek için standart deyim

3 Cevap php

(Ilişkiler gibi) önceki tüm modelleri ve meta-verilerini korurken Symfony + Doktrini üzerine inşa benim app yeni bir model ekleyerek standart bir yolu nedir.

(Üretirken modelleri reset / reset db her türlü yok ki) ./script/generate model FooModel Ruby on Rails içinde eşdeğer olacak bir komut / prosedürü: Ne ben gerçekten arıyorum

Bu iki farklı şeylerdir, ve ben (ben değilim düşünmek istiyorum) yanlış hayaleti takip ediyorsam, lütfen bana bildirin.

EDIT: soruyu Güncelleme.

3 Cevap

Standart süreç yeni modeli eklemek ve herhangi bir ilişkileri o schema.yml gerektirir

. Sonra do / symfony doktrini: build-tüm (ya da: build - tüm symfony 1.3/1.4 için)

Richsage diyor, sen temel sınıfları düzenleme gerektiğini, bu nedenle bu işlem tamamen olmayan yıkıcı.

Doktrin de göçler için işlevselliği olan bir güncelleştirme size böylece üretime yeni kodu dağıtmak kolayca veritabanı şeması:

http://www.doctrine-project.org/documentation/cookbook/1%5F0/en/symfony-and-doctrine-migrations

Doktrin yeni sürümleri (1.1 +, Symfony 1.3 +) sizin için göçler oluşturabilirsiniz oluşturmak-göçler-fark görevi bulunmaktadır. Bu çok iyi burada kaplıdır:

http://stackoverflow.com/questions/1855925/extra-changecolumns-in-doctrine-generate-migrations-diff

[Edit: Yukarıdaki sorunun yazarı şimdi de aşağıda yapıştırdım / kopyası vardır]

Eğer build:all veya doctrine:build-model vb lib / model dizini örneğin oluşturulan sınıfları kullanabilirim zaman bu çoğunlukla otomatik oluşturulmuş olacak olacak gibi, temel sınıfları geçersiz olmamalı YourModel.class.php vb yeni yöntemler eklemek istiyorsanız Sonra yeni modeller mevcut olanların yanında oluşturulur.

Oluşturmak-göçler-fark iki farklı yaml dosyalarını diff değildir. Aslında modellerini karşılaştırır ve sonra yaml dosya ve farklılıklara dayalı bir göç oluşturur. Eğer YAML ve sınıfları ile senkronize olan bir db başlatırsanız, şema değişiklikleri yapmak için iş akışı olmalıdır:

  1. Yaml dosyasını değiştirme
  2. Run generate-migrations-diff sizin (değişmedi) modelleri ile mevcut (değişti) YAML diff için. Bu doktrin / göçler dizinine (veya ne olursa olsun migrations_path sizin doktrin config ayarlanır) Bir göçler dosyası oluşturur.
  3. Run migrate 2. adımda oluşturulan geçiş çalıştırmak ve veritabanı değiştirmek için
  4. Run generate-models-yaml sizin yaml dosyaya dayalı yeni sınıflar oluşturmak için. Oluşturulan modeller (sizin doktrin config models_path) nereye belirttiğiniz bu gidin.
  5. Run generate-sql, bir SQL dosyası oluşturmak için. Lütfen doktrin sql_path yapılandırma ayarlanır burada gidecek.