이 문제를 해결할 수있는 방법을 찾았습니다. 아니면 명령을 사용하는 방법 일 수도 있습니다.
자신의 번들 중 하나 (또는 전적으로 귀하에게 달려 있음)에 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