使用Doctrine Import执行SQL文件

时间:2012-12-05 12:49:10

标签: unit-testing doctrine

我有一个SQL脚本,我打算在运行单元测试时用作数据夹具。我知道Doctrine DBAL有一个CLI的导入命令,但我只想从我的单元测试脚本中运行它。

基于

\Doctrine\DBAL\Tools\Console\Command\ImportCommand

我很难理解如何在不使用exec的情况下从PHP中实现这一目标,如果我能帮助它的话。

有人能指出我正确的方向吗?

由于

1 个答案:

答案 0 :(得分:1)

查看ImportCommand的代码,您可以提取其基本部分来创建自己的函数:

protected function executeSqlFile(Connection $conn, $file)
{
    $sql = file_get_contents($file);
    $lines = 0;

    $stmt = $conn->prepare($sql);
    $stmt->execute();

    do {
        // Required due to "MySQL has gone away!" issue
        $stmt->fetch();
        $stmt->closeCursor();

        $lines++;
    } while ($stmt->nextRowset());

    return $lines;
}