Невозможно использовать модель в миграции в Yii 1.x - PullRequest
5 голосов
/ 10 октября 2011

Использование миграции для вставки или изменения структуры таблицы для меня не проблема.Но у меня есть проблемы с изменением данных внутри таблицы с использованием модели.Моя идея сделать что-то вроде этого:

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

Кажется, что я не могу импортировать модель, потому что я получаю следующую ошибку:

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

Если япопробуйте импортировать модель раньше:

$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?

1 Ответ

3 голосов
/ 21 октября 2011

Миграции определенно должны быть набором команд SQL. Я бы порекомендовал использовать команду SELECT REPLACE. Смотри http://www.1keydata.com/sql/sql-replace.html

Однако подход, который вы используете, также должен работать, если вы включите все необходимые файлы php. Вам также могут понадобиться ваши базовые модели:

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

И обязательно отредактируйте файл config / console.php, чтобы получить правильную информацию о базе данных.

...