Bir özel kayıt sınıfını genişleten Doktrin modelleri / sınıfları oluşturmak için nasıl

2 Cevap php

Ben Yaml / db sınıfları oluşturmak için Doktrini kullandığınızda (tablo tanımını içeren) her Taban sınıf Doctrine_Record sınıfını genişletir.

Since my app uses a master and (multiple) slave db servers I need to be able to make the Base classes extend my custom record class to force writes to go to the master db server (as described here). However if I change the base class manually I lose it again when I regenerate my classes from Yaml/db using Doctrine.

Ben kendi Base sınıfını genişleten veya Doktrini kullanarak bir master / slave db kurulum için farklı bir çözüm bulmak için Doktrini söylüyorum bir yolunu bulmalıyız.

Örnek oluşturulan model:

abstract class My_Base_User extends Doctrine_Record
{

Ancak otomatik olarak oluşturulur gerekir:

abstract class My_Base_User extends My_Record
{

Herhangi bir fark yaparsa ben yeni bir Zend Framework 1.9.6 uygulamasında Doktrini 1.2.1 kullanıyorum.

2 Cevap

Tipik, en kısa sürede ben soru sormak gibi ben cevap bulmak için yönetmek. Ben başkasının aynı sorunu var bu durumda burada kaydediyorum.

Sen generateModels * yöntemleri içine parametre 'TemelSinifAdi' geçmek ve Doktrin Bankası kaydı sınıf olarak kullanacaktır.

Örnekler:

Doctrine_Core::generateModelsFromDb('models', array('master'), array('generateTableClasses' => true, 'baseClassName' => 'My_Record'));

veya CLI kullanarak:

$options['generate_models_options'] = array(
'pearStyle'             => true,
'baseClassPrefix'       => 'My_',
'baseClassName'         => 'My_Record',
'classPrefix'           => '',
'classPrefixFiles'      => false,
'generateTableClasses'  => true,
);

$cli = new Doctrine_Cli($options);

Mükemmel, teşekkürler! Ben benzer bir sürümü (1.9.x) benim Zend Framework proje benim application.ini gelen doktrin seçenekleri kapmak, çünkü bu serin. Şimdi ben sadece bu gibi TemelSinifAdi eklemek ini değiştirebilirsiniz:

doctrine.generate_models_options.baseClassName = "BaseRecord"

Teşekkürler tekrar kendi başıma bu sergiyi bana zaman tasarrufu için :)