缺少命名空间

Namespace missing

我在文件夹 frontend/migrations

中有以下 class
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() 都会抛出错误:

Unable to find 'frontend\migrations\m170727_180101_Bewerbungen' in file: E:\xampp\htdocs\Yii2_Mail/frontend/migrations/m170727_180101_Bewerbungen.php. Namespace missing?**

这是我的脚本:

namespace frontend\migrations; ...

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

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

那是什么鬼? 像这样使用同样的错误:

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

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

尝试使用完整路径

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

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

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

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