Multiple database connection Yii2 not working

2019-07-17 15:48发布

问题:

Yii::setAlias('@tests', dirname(__DIR__) . '/tests');

$params = require(__DIR__ . '/params.php');
$db = require(__DIR__ . '/db.php');
$dbPusat = require(__DIR__ . '/dbPusat.php');
$dbPaperless = require(__DIR__ . '/dbPaperless.php');

return [
    'id' => 'basic-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log', 'gii'],
    'controllerNamespace' => 'app\commands',
    'modules' => [
        'gii' => 'yii\gii\Module',
    ],
    'components' => [
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => $db,
        'dbPusat' => $dbPusat,
        'dbPaperless' => $dbPaperless,
    ],
    'params' => $params,
];

In my console.php, i have 3 connection there is db, dbPusat and dbPaperless. for db and dbPusat its work perfectly. but for dbPaperless its not detected. When i want to generate model from that connectio there is an error like this.

Please help me, thanks.

回答1:

From the configuration format I'm assuming that you are based on the basic application. In your explanation you mention that in "your console.php-config you have defined 3 connections". Those will work for console only.

The screenshot you added clearly shows a web interface. Therefor I can only conclude that you haven't added the same 3 connections in the web.php-config.

The basic app uses console.php when you start an action on the command line (via ./yii and it uses web.php when you get to to the application via a browser.

So basically: Copy your connections configuration into the web.php and you should be ok.