命名空间丢失

时间:2017-07-27 19:00:23

标签: yii2-advanced-app

我在文件夹前端/迁移中有以下课程

use yii\db\Schema;

class m170727_180101_Bewerbungen extends \yii\db\Migration
{
    public function safeUp()
    {
        $tableOptions = null;
        if ($this->db->driverName === 'mysql') {
            $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
        }

        $this->createTable('bewerbungen', [
            'bew_id' => $this->primaryKey(),
            'datum' => $this->date()->notNull(),
            'firma' => $this->string(100)->notNull(),
            'rechtsart' => $this->integer(11),
            'stadt' => $this->string(100)->notNull(),
            'plz' => $this->integer(11)->notNull(),
            'strasse_nr' => $this->string(100),
            'ansprech_person' => $this->string(100),
            'email' => $this->string(50)->notNull(),
            'feedback' => $this->integer(11),
            'bemerkungen' => $this->string(150),
            'FOREIGN KEY ([[feedback]]) REFERENCES nachricht ([[id_message]]) ON DELETE CASCADE ON UPDATE CASCADE',
            'FOREIGN KEY ([[rechtsart]]) REFERENCES rechtsform ([[id_recht]]) ON DELETE CASCADE ON UPDATE CASCADE',
            ], $tableOptions);

    }

    public function safeDown()
    {
        $this->dropTable('bewerbungen');
    }
}

每次尝试读出方法safeUp()都会抛出错误:

  

无法找到&前端\ migrations \ m170727_180101_Bewerbungen'在文件中:E:\ xampp \ htdocs \ Yii2_Mail / frontend / migrations / m170727_180101_Bewerbungen.php。名称空间缺失?**

这是我的剧本:

namespace frontend\migrations; ...

$connect=new m170727_180101_Bewerbungen();
$connect->safeUp(); ...

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

那到底是什么意思? 使用如下相同的错误:

$connect=new \frontend\migrations\m170727_180101_Bewerbungen();

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2 个答案:

答案 0 :(得分:1)

尝试使用完整路径

 $connect=new \frontend\migration\m170727_180101_Bewerbungen();

答案 1 :(得分:0)

您遇到此错误,因为您的文件中没有命名空间,因此自动加载器无法找到它。

但这不是真正的问题 - 你没有正确使用Yii 2迁移。关注Yii2 Migration Guide

此外,由于您将此迁移放在frontend中,因此您可能需要查看Namespaced Migrations以实际添加命名空间并正确运行它。