Yii2 无法实例化组件或类“db”

tns*_*day 5 migration yii2

我使用 Yii2 控制台应用程序来运行迁移。这是一个非常基本的应用程序,它是这样的(项目的 / 文件夹中的 yii.php):

<?php

    require __DIR__ . '/vendor/autoload.php';
    require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
    $config = require __DIR__ . '/config/console.php';

    (new yii\console\Application($config))->run();

?>
Run Code Online (Sandbox Code Playgroud)

所以当我跑

php yii.php
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是当我跑步时

php yii.php migrate/create create_user_table
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

Error: Failed to instantiate component or class "db".
Run Code Online (Sandbox Code Playgroud)

我的 Yii 是 v2.0.15.1

UPD 19:32 30/12/2018 当我将 db 配置添加到 config/console.php 时,如下所示:

    return [
    'id' => 'school-console',
    'basePath' => dirname(__DIR__),
    'db' => [
              'class' => 'yii\db\Connection',
              'dsn' => 'mysql:host=localhost;dbname=school',
              'username' => 'root',
              'password' => 'Taras1love',
              'charset' => 'utf8',
    ]
];
Run Code Online (Sandbox Code Playgroud)

我明白了:

Error: Setting read-only property: yii\console\Application::db
Run Code Online (Sandbox Code Playgroud)

Muh*_*lam 4

您缺少控制台应用程序的数据库组件配置,您需要在config/console.php文件中添加以下内容。当您使用basic-appYii2 时,您必须有一个db.php包含数据库配置的文件,您需要像下面一样包含它

//this goes on the top of your `console.php` file 
$db = require __DIR__ . '/db.php',

return [
    'id' => 'myapp-console', 
    'basePath' => dirname(__DIR__)
    //add the db component
    'components' => [
        'db' => $db,
    ]
];
Run Code Online (Sandbox Code Playgroud)

您的文件夹db.php内应该如下所示,更改、和config的值。usernamepassworddbname

<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=YOUR_DB_NAME',
    'username' => 'DB_USER',
    'password' => 'DB_PASS',
    'charset' => 'utf8',
];
Run Code Online (Sandbox Code Playgroud)

config/console.php或者如果您不想创建单独的文件,您可以将其分配在

return [
    'id' => 'myapp-console', 
    'basePath' => dirname(__DIR__)
    //add the db component
    'components' => [
        'db' => [
           'class' => 'yii\db\Connection',
           'dsn' => 'mysql:host=localhost;dbname=YOUR_DB_NAME',
           'username' => 'DB_USER',
           'password' => 'DB_PASS',
           'charset' => 'utf8',
        ]
    ]
];
Run Code Online (Sandbox Code Playgroud)