2011-10-10 28 views
5

Tablo yapısını eklemek veya değiştirmek için geçiş yapmak benim için sorun değil. Ancak, bir tabloyu kullanarak verileri model kullanarak değiştirmek için bir problemim var. Benim fikrim böyle bir şey yapmaktır:Yii 1.x içinde geçişte model kullanılamıyor.

*** applying m111010_084827_convert_point_2_comma 
PHP Error[2]: include(MyModel.php): failed to open stream: No such file or directory 

ben almaya çalışırsanız:

public function up() 
{ 
    $models = MyModel::model()->findAll(); 
    foreach ($models as $variable) { 
     $variable->property = str_replace('.', ',', $variable->property); 
     $variable->save(); 
    } 
} 

Ben follwoing hata alıyorum çünkü modeli içe engel oluyor gibi görünüyor Modeli önce:

$modelClass = Yii::import('application.models.*'); 

sonra hatadır:

*** applying m111010_084827_convert_point_2_comma 
exception 'CDbException' with message 'The table "{{mymodel}}" for active record class "MyModel" cannot be found in the database.' in C:\...\yii\framework\db\ar\CActiveRecord.php:2276 

Sorun nerede? Neyi yanlış yapıyorum? Modeli göç konusunda doğru şekilde nasıl ithal etmeliyim? Ya da dizeleri SQL komutlarıyla değiştirmeliyim?

+0

Bu açık bir soru gibi görünebilir, ancak ... CACtiveRecord modelinin düzgün ayarlandı mı, doğru "tableName()" belirtiyor mu ve tablo veritabanında var mı? Bir göçün bazı modellerinde hızlı bir test döngüsünü yaptım çünkü benim için iyi çalışıyor gibi görünüyordu. – thaddeusmt

+0

@thaddeusmt: tableName, Modeller ve Tablolar haklıydı. ama ben config/console.php içinde başka bir db yapılandırması olduğunu fark ettim. Bunu değiştirdikten sonra - işe yaradı! teşekkürler .. – zonky

+0

Ah! Evet, bu zor bir şey. Anlamana sevindim! Ben DB bilgisi için kullandığım bir "temel" yapılandırma dosyası var ve sonra ben aynı DB bilgi mirasını böylece benim web ve konsol yapılandırma dosyaları ile birleştirmek için CMap :: mergeArray kullanın. – thaddeusmt

cevap

3

Geçişler kesinlikle bir SQL komutları kümesidir. SELECT REPLACE komutunu kullanmanızı tavsiye ederim. Tüm gerekli php dosyalarını eklediğiniz sürece, yaklaşmakta olduğunuz yaklaşım da çalışmalıdır.

Yii::import('application.models.*'); 
    Yii::import('application.models.base.*'); 

Ve Doğru veritabanı bilgi sahibi olmak config/console.php düzenlemek emin olun: Ayrıca baz modelleri gerekebilir.