2012-04-17 5 views
0

私はsymfony 1.4プロジェクトでタスクを作成しており、いくつかのテーブルを更新する必要があります。私が書いたカスタムタスクでのdoctrineの使用

<?php 
class dataImportTask extends sfBaseTask 
{ 
    public function configure() 
    { 
    $this->namespace = 'data'; 
    $this->name  = 'import'; 

    $this->addOptions(array(
     new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'environment', 'dev'), 
    )); 
    } 

    public function execute($arguments = array(), $options = array()) 
    { 
    $databaseManager = new sfDatabaseManager(sfProjectConfiguration::getApplicationConfiguration('frontend', $options['env'], true)); 
    $connection = $databaseManager->getDatabase()->getConnection(); 
    } 
} 

(例以下はon symfony-project.orgを見つけました)しかし、私は、タスクを実行するとき、symfonyは言う: "Database "default" does not exist."。なぜタスクはdatabases.ymlで定義されたdbnameを使用しないのですか?

答えて

4

タスクを処理するときによくある問題です。 database.ymlの中に同じ名前を維持し、右のデータベース名を取得するために、すべてのタスクのオプションを追加しdatabase.ymlの

  • であなたの教義接続defaultという名前

    • :あなたは、2つのオプションがあります。 database.ymlので

      :オプション#2の

    、あなたはgetDatabase作品方法を変更し、その後、データベースの名前(1あなたのdatabase.ymlで定義)でオプションを追加し、する必要があります。

    all: 
        doctrine: 
        class: sfDoctrineDatabase 
    

    上記の教義名に基づいて、あなたのタスクでオプションを追加します。

    <?php 
    class dataImportTask extends sfBaseTask 
    { 
        public function configure() 
        { 
        $this->namespace = 'data'; 
        $this->name  = 'import'; 
    
        $this->addOptions(array(
         new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'environment', 'dev'), 
         new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'), 
        )); 
        } 
    
        public function execute($arguments = array(), $options = array()) 
        { 
        $databaseManager = new sfDatabaseManager(sfProjectConfiguration::getApplicationConfiguration('frontend', $options['env'], true)); 
        $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); 
        } 
    } 
    
  • +0

    非常に速く、素晴らしい答えを、ありがとう! – Manu

    関連する問題