【问题标题】:Unable to use model in migration in Yii 1.x在 Yii 1.x 中无法在迁移中使用模型
【发布时间】:2023-03-05 08:29:01
【问题描述】:

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

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

【问题讨论】:

  • 这似乎是一个显而易见的问题,但是...您是否设置了正确的 CACtiveRecord 模型,它是否指定了正确的 tableName(),并且该表是否存在于数据库中?因为我只是在迁移中对一些模型进行了快速测试,所以它对我来说似乎工作得很好。
  • @thaddeusmt:tableName、Models 和 Tables 是对的。但我从来没有意识到 config/console.php 是另一个数据库配置。在我改变之后 - 它起作用了!谢谢..
  • 啊!是的,这是一个棘手的问题。很高兴你明白了!我有一个用于数据库信息的“基本”配置文件,然后我使用 CMap::mergeArray 将它与我的 Web 和控制台配置文件结合起来,以便它们继承相同的数据库信息。

标签: php database migration yii data-migration


【解决方案1】:

迁移绝对是一组 SQL 命令。我建议使用 SELECT REPLACE 命令。见http://www.1keydata.com/sql/sql-replace.html

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 2015-04-03
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多