0

我目前正在为一个 symfony 项目设置学说迁移。我想知道为什么自动生成的迁移使用直接 SQL 语句。例如,这些将其限制为 mysql 和 INNODB-enginge(因为它是我的本地环境)。但是它将运行的项目的数据库环境可能会有所不同。

为什么它不让实体经理处理这种事情?

例如,在 up-function 中,它会生成如下内容:

$this->addSql('CREATE TABLE tag (id INT AUTO_INCREMENT NOT NULL, category_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, is_active TINYINT(1) DEFAULT \'1\' NOT NULL, INDEX IDX_389B78312469DE2 (category_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');

为什么它不使用 schemaTool ?喜欢:

$schemaTool = new SchemaTool($em);
        $metaData = $em->getClassMetadata($className);

        if ($this->sm->tablesExist(array($metaData->getTableName())) == true) {
            $this->write("Table already exists :" . $className);
        }
        else{
            $schemaTool->createSchema([
                $metaData
            ]);
        }

这样它就不会取决于我的数据库设置。我错过了什么吗?还是让schemaTool处理它或使用entitymanager进行数据迁移是否有缺点?

4

0 回答 0