Я использую yii2 в первый раз, и я хочу попробовать yii миграции. Проблема: я создал файл миграции с
php yii migrate/create new_table
файл создается. затем я ввожу новые данные таблицы в файл миграции. и когда я запускаю php yii migrate
я получил ошибку
Exception 'ReflectionException' with message 'Class db does not exist'
in /var/www/yii2.uz/vendor/yiisoft/yii2/di/Container.php:415Exception 'ReflectionException' with message 'Class db does not exist'
чем проблема?
in /var/www/yii2.uz/vendor/yiisoft/yii2/di/Container.php:415
моя console/config/main.php
:
<?php $params = array_merge( require(__DIR__ . '/../../common/config/params.php'), require(__DIR__ . '/../../common/config/params-local.php'), require(__DIR__ . '/../../common/config/main-local.php'), require(__DIR__ . '/params.php'), require(__DIR__ . '/params-local.php') ); return [ 'id' => 'app-console', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'controllerNamespace' => 'console\controllers', 'components' => [ 'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], ], ], ], 'params' => $params, ];
и мой файл миграции:
<?php use yii\db\Schema; use yii\db\Migration; class m150727_125205_new_table extends Migration { public function up() { $this->createTable('test',[ 'id'=> Schema::TYPE_PK, 'name'=> Schema::TYPE_STRING ]); } public function down() { echo "m150727_125205_new_table cannot be reverted.\n"; return false; }
Настройка компонента БД для консоли отсутствует, добавьте это в файл console/config/main-local.php
для локальной разработки:
'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=dbname', 'username' => 'username', 'password' => 'password', 'charset' => 'utf8', ], ],
Для производственного сервера исправьте этот файл в соответствии с настройками db.
Обратите внимание, что -local
файлы находятся в списке .gitignore
.
Если вы используете расширенное приложение, вы должны поместить в среду / dev / common / main-local.php следующий код, чтобы объявить компонент db в приложении
'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=dbname', 'username' => 'username', 'password' => 'password', 'charset' => 'utf8', ],
],
Если вы хотите, чтобы на самом деле приложение было применено к приложению в расширенном шаблоне, вы должны запустить ./yii init или php yii init.
Если вы используете базовое приложение, вы должны поместить его под общим / основным-local.php-файлом напрямую.
Важно поставить его под общую, а не просто консолью, поскольку вы, вероятно, будете использовать одну и ту же базу данных с консоли и веб-приложений.