是否可以在迁移类中调用.sql文件?
我在这个话题上找不到任何东西。
答案 0 :(得分:13)
是的,只需输入.sql文件并从迁移类中引用它。
$this->addSql(file_get_contents(__DIR__ . '/sql-dump.sql'));
答案 1 :(得分:0)
我知道这是一个古老的问题,但当我用Google搜索时,它仍然是唯一真正的打击。上述答案可以略微改进。这很简单,但你可能不会想到它。如果你有一个包含多个查询的sql文件除以分号,你可以分解分号上的内容。
<?php
foreach (explode(';', file_get_contents(__DIR__ . '/sql-dump.sql')) as $sql) {
$this->addSql($sql);
}
答案 2 :(得分:0)
如果您使用的是SQLite,并且想执行一个包含多个用分号分隔的语句的.sql文件,则建议使用以下代码:
$this->connection->exec(file_get_contents(__DIR__ . '/sql-dump.sql'));
这是因为,如果您使用addSql()方法,Doctrine将调用query()方法,该方法不支持单个字符串中的多个语句,并且仅执行第一个。仅exec()方法支持多条语句。参见:php.net/manual/en/function.sqlite-query.php
答案 3 :(得分:0)
对于我使用的 MySQLi:
$this->connection->getWrappedConnection()->getWrappedResourceHandle()->multi_query($sql);