我找到了一個解決方法,就像你可以稱之爲,或者可能只是一種啓用命令的方法。
通過將Command
添加到您自己的某個包(或專用包,由您決定)中,您可以簡單地繼承該Doctrine命令。例如。使dbal:import
命令使用以下命令:
namespace Acme\Bundle\AcmeBundle\Command\Doctrine;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper;
use Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper;
class ImportCommand extends \Doctrine\DBAL\Tools\Console\Command\ImportCommand {
protected function execute(InputInterface $input, OutputInterface $output)
{
$container = $this->getApplication()->getKernel()->getContainer();
$doctrine = $container->get('doctrine');
$em = $doctrine->getEntityManager();
$db = $em->getConnection();
$helperSet = $this->getHelperSet();
$helperSet->set(new ConnectionHelper($db), 'db');
$helperSet->set(new EntityManagerHelper($em), 'em');
parent::execute($input, $output);
}
}
正如你所看到的,我們只是繼承了原來的命令。由於數據庫配置由Symfony管理,我們需要通過容器獲取實體管理器。一旦我們更新HelperSet
,我們將執行回傳給父類。
這些命令應該可以通過'bin/doctrine'獲得。 – kix
@kix;我明白那個。 'bin/doctrine'的問題是它不理解'--env'參數。我希望這些命令可以通過'app/console'獲得。 – Luke