2016-09-04 4 views
2

私はyii2でmongodbを使用しており、移行を使用したいと思います。yii2 mongodbの移行が機能しません

これは私のモデルクラスです。

namespace app\models; 

use yii\mongodb\ActiveRecord; 

class Company extends ActiveRecord 
{ 


    /** 
    * @return array 
    */ 
    public static function collectionName() 
    { 
     return ['cafegardesh','companies']; 
    } 


    /** 
    * @return array 
    */ 
    public function attributes() 
    { 
     return ['_id', 'name', 'address', 'status']; 
    } 


    /** 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 

      [['name'], 'required'], 

     ]; 
    } 

、これが私のマイグレーションファイルです:

use yii\mongodb\Migration; 

class m160904_053937_create_companies_collection extends Migration 
{ 

    public function up() 
    { 

    } 

    public function down() 
    { 
     echo "m160904_053937_create_companies_collection cannot be reverted.\n"; 

     return false; 
    } 

    /* 
    // Use safeUp/safeDown to run migration code within a transaction 
    public function safeUp() 
    { 
    } 

    public function safeDown() 
    { 
    } 
    */ 
} 

と、これは私のコンソールの設定ファイルである:

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

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

$config = [ 
    'id' => 'basic-console', 
    'basePath' => dirname(__DIR__), 
    'bootstrap' => ['log'], 
    'controllerNamespace' => 'app\commands', 
    'components' => [ 
     'cache' => [ 
      'class' => 'yii\caching\FileCache', 
     ], 
     'log' => [ 
      'targets' => [ 
       [ 
        'class' => 'yii\log\FileTarget', 
        'levels' => ['error', 'warning'], 
       ], 
      ], 
     ], 
     'db' => $db, 

     'mongodb' => [ 
      'class' => \yii\mongodb\Connection::class, 
      'dsn' => 'mongodb://cafegardesh:[email protected]:27017/cafegardesh', 
     ] 
    ], 

    'modules' => [ 
     'taxonomy-term'=>[ 
      'class'=> \mhndev\yii2TaxonomyTerm\Module::class 
     ] 
    ], 


    'params' => $params, 
    /* 
    'controllerMap' => [ 
     'fixture' => [ // Fixture generation command line. 
      'class' => 'yii\faker\FixtureController', 
     ], 
    ], 
    */ 
]; 

if (YII_ENV_DEV) { 
    // configuration adjustments for 'dev' environment 
    $config['bootstrap'][] = 'gii'; 
    $config['modules']['gii'] = [ 
     'class' => 'yii\gii\Module', 
    ]; 
} 

return $config; 

、これは私が実行コマンドです:

php yii migrate/up --db=mongodb 

と次のエラーが表示されます。

Exception 'yii\base\InvalidConfigException' with message '"mongodb" refers to a yii\mongodb\Connection component. yii\db\Connection is expected.' 

in /home/majid/Projects/Gardesh-Tour-Backend/vendor/yiisoft/yii2/di/Instance.php:135 

答えて

6

MongoDBコンポーネントには独自の移行コントローラがあります。代わりにそれを使用してください。あなたのコンソールの構成では

'controllerMap' => [ 
    'mongodb-migrate' => 'yii\mongodb\console\controllers\MigrateController' 
], 

今、あなたはphp yii mongodb-migrate/upを使用することができますを追加します。

デフォルトでdbのコンポーネントはmongodbです。

+0

ありがとうございました。それは修正されました。 (y) – mhndev

関連する問題