Nasıl Doktrini 1.1 kullanarak bir MySQL tablo yabancı anahtar kısıtlamalarını anlamaya?

0 Cevap php

Iki model birbirleriyle ilişkili olduğunda, Doktrin otomatik güzel MySQL veritabanı yabancı anahtar kısıtlamaları oluşturur. OnDelete ve OnUpdate için varsayılan davranış sınırlamak değil de null veya CASCADE SET ayarlanabilir.

Şimdi, ben bir YAML dosyaya göre varolan bir veritabanından bir göç diff oluşturmak istiyorum. Bunu yapmak için, ben Doctrine::generateModelsFromDB() işlevini kullanın. Ben o güzel tüm şeyler yapar olmayan eşleşen sınıf isimleri, MySQL alan uzunlukları vb önemser benim için fark işi yapmak için bir aşırı Doctrine_Migration_Diff versoin kullanabilirsiniz, ancak bu yabancı anahtar kısıtlamaları ile ilgili bir sorun var.

Ben bir MySQL veritabanı PHP sınıfları oluşturmak, bu Doktrin uygun değerlere 'OnDelete' ve 'OnUpdate' set yok gibi görünüyor. Sonra 'OnDelete' ve / veya 'OnUpdate' seti var sınıflara karşı bu PHP sınıfları diff çalıştığınızda, Doktrin zaten var, yeni bir yabancı anahtarı eklemek için çalışır ve MySQL başarısız olur.

Ben elle aşırı Doctrine_Migration_Diff tüm değişti yabancı anahtarlar göz ardı ederek geçici olarak bu hata etrafında çalıştı, ama bu gerçekten bir çözümdür.

Ne istiyorum: Doktrin yeni Yabancı anahtar eklenmesi gerekiyor düşünürse, şans zaten var olduğunu, ve ne onun OnDelete ve OnUpdate davranış ayarlanır. Nasıl kontrol edebilirim ki, ben yerel alan adı ve yabancı alan adı varsa?

P.S. Biri bu (ben şüpheliyim) Doktrini 1.2 giderilmiştir belli ise, bana yükseltmek için tavsiye etmeyiniz. Ben bu durumda 1.1 ile çalışmak için özel nedenleri var, ama bu farklı bir hikaye. Ben oldukça yakın bir çözüm için bir adım olabilir, bu düzeltmeyi, ne sağlanan kod değişikliği yönünde içine işaret olacaktır.

0 Cevap