- Place the
doctrinescript below in your application's bin directory - Make it executable (or prepend
phpto the command below)
EM_ALIAS="my-custom-em" bin/doctrine
The CLI commands will now run using the my-custom-em Entity Manager.
| #!/usr/bin/env php | |
| <?php | |
| use Zend\ServiceManager\ServiceManager; | |
| use Zend\Mvc\Application; | |
| use Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper; | |
| ini_set('display_errors', true); | |
| chdir(__DIR__); | |
| $previousDir = '.'; | |
| while (!file_exists('config/application.config.php')) { | |
| $dir = dirname(getcwd()); | |
| if ($previousDir === $dir) { | |
| throw new RuntimeException( | |
| 'Unable to locate "config/application.config.php": ' . | |
| 'is DoctrineModule in a subdir of your application skeleton?' | |
| ); | |
| } | |
| $previousDir = $dir; | |
| chdir($dir); | |
| } | |
| if (is_readable('init_autoloader.php')) { | |
| include_once 'init_autoloader.php'; | |
| } elseif (!(@include_once __DIR__ . '/../vendor/autoload.php') && !(@include_once __DIR__ . '/../../../autoload.php')) { | |
| throw new RuntimeException('Error: vendor/autoload.php could not be found. Did you run php composer.phar install?'); | |
| } | |
| $application = Application::init(include 'config/application.config.php'); | |
| /* @var $cli \Symfony\Component\Console\Application */ | |
| $cli = $application->getServiceManager()->get('doctrine.cli'); | |
| // If we've overridden the entity manager via env var, inject the new one | |
| $entityManagerName = getenv('EM_ALIAS') ?: 'orm_default'; | |
| if ( $application->getServiceManager()->has($entityManagerName) ) { | |
| $emHelper = new EntityManagerHelper($application->getServiceManager()->get($entityManagerName)); | |
| $cli->getHelperSet()->set($emHelper, 'em'); | |
| } | |
| $cli->run(); |