Ora*_*ras 0 migration entity doctrine symfony
我的symfony项目中有3个实体管理器,我想将新表添加到特定的实体管理器.我知道我可以通过使用以下命令传递--em ="EntityManager1"从命令行执行此操作:
php app/console doctrine:migration:migrate --em="EntityManager1"
Run Code Online (Sandbox Code Playgroud)
但我想在代码本身中这样做.
例:
public function up(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");?
$this->addSql("CREATE TABLE `myTable` (
`id` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1?");
}
public function down(Schema $schema)
{
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "mysql");
$this->addSql("DROP TABLE myTable");?
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
根据https://github.com/doctrine/DoctrineMigrationsBundle/issues/38
你必须实现 Symfony\Component\DependencyInjection\ContainerAwareInterface
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Version20140717170412 extends AbstractMigration implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
protected $container;
/**
* {@inheritdoc}
*/
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
Run Code Online (Sandbox Code Playgroud)
然后
/**
* {@inheritdoc}
*/
public function up(Schema $schema)
{
$myEmConnection = $this->container->get('doctrine')
->getManager('my_em')->getConnection();
$this->skipIf(
$this->connection !== $myEmConnection,
'Require my_em manager'
);
Run Code Online (Sandbox Code Playgroud)