我有一个SQL脚本,我打算在运行单元测试时用作数据夹具。我知道Doctrine DBAL有一个CLI的导入命令,但我只想从我的单元测试脚本中运行它。
基于
\Doctrine\DBAL\Tools\Console\Command\ImportCommand
我很难理解如何在不使用exec的情况下从PHP中实现这一目标,如果我能帮助它的话。
有人能指出我正确的方向吗?
由于
答案 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;
}