2011-10-10 10 views
5

マイグレーションを使用してテーブル構造を挿入または変更することは問題ありません。しかし、モデルを使ってテーブル内のデータを変更するのに問題があります。私の考えではそのような何かを行うことです。Yii 1.xのマイグレーションでモデルを使用できません

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

私はインポートしよう:

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

それは私がfollwoingエラーを取得していますので、私は、モデルをインポートすることができませんだと、思えます前モデル:

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

は、エラーがある:

*** 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 

どこに問題がありますか?私は何をしていますか?正しい方法でマイグレーションでモデルをインポートするにはどうすればよいですか?あるいは、私はSQLコマンドで文字列を置き換える必要がありますか?

+0

これは明白な疑問のように思えるかもしれませんが、適切なCACtiveRecordモデルが設定されていますか、正しい 'tableName()'が指定されていますか?テーブルがデータベースに存在していますか?私はちょうど移行のいくつかのモデルを介して迅速なテストをループしたので、それは私のためにうまくいくように見えました。 – thaddeusmt

+0

@thaddeusmt:tableName、モデルとテーブルが正しくありました。しかし、config/console.phpが別のdb-configurationであることに気付かなかった。私はそれを変更した後 - それは働いた!ありがとう.. – zonky

+0

ああ!うん、それは難しいことだ。あなたはそれを考え出してうれしい!私はDB情報のために使う "基本"設定ファイルを持っています。そして、私はCMap :: mergeArrayを使ってそれを私のウェブとコンソールファイルと組み合わせて、同じDB情報を継承します。 – thaddeusmt

答えて

3

移行は、間違いなく一連のSQLコマンドを意味します。 SELECT REPLACEコマンドを使用することをお勧めします。 http://www.1keydata.com/sql/sql-replace.html

しかし、すべての必要なPHPファイルを含める限り、あなたが取っているアプローチも有効です。

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

また、config/console.phpを編集して、正しいデータベース情報を持っていることを確認してください。