是否可以在学说迁移中调用.sql文件?

时间:2012-11-23 09:55:44

标签: sql symfony1 doctrine symfony-1.4

是否可以在迁移类中调用.sql文件?

我在这个话题上找不到任何东西。

4 个答案:

答案 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);