Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法在Yii 1.x中的迁移中使用模型_Php_Database_Migration_Yii_Data Migration - Fatal编程技术网

Php 无法在Yii 1.x中的迁移中使用模型

Php 无法在Yii 1.x中的迁移中使用模型,php,database,migration,yii,data-migration,Php,Database,Migration,Yii,Data Migration,使用迁移插入或更改表结构对我来说没有问题。但是,我在使用模型更改表中的数据时遇到了一些问题。我的想法是这样做: public function up() { $models = MyModel::model()->findAll(); foreach ($models as $variable) { $variable->property = str_replace('.', ',', $variable->property);

使用迁移插入或更改表结构对我来说没有问题。但是,我在使用模型更改表中的数据时遇到了一些问题。我的想法是这样做:

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命令替换字符串?

迁移肯定是一组SQL命令。我建议使用SELECT REPLACE命令。看

但是,只要包含所有必需的php文件,您所采用的方法也应该有效。您可能还需要基本模型:

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

并确保编辑config/console.php以获得正确的数据库信息。

这似乎是一个显而易见的问题,但。。。您是否设置了正确的CACtiveRecord模型,它是否指定了正确的
tableName()
,以及该表是否存在于数据库中?因为我只是在迁移过程中通过一些模型做了一个快速测试,它似乎对我来说很好。@thaddeusmt:tableName,models and Tables是正确的。但我从未意识到config/console.php中是另一种db配置。在我改变了这一点之后——它成功了!谢谢……啊!是的,这是个棘手的问题。很高兴你弄明白了!我有一个用于DB信息的“基本”配置文件,然后我使用CMap::mergeArray将其与我的web和控制台配置文件相结合,以便它们继承相同的DB信息。