我有一个 SQL 脚本,打算在运行单元测试时用作数据夹具。我知道 Doctrine DBAL 有一个用于 CLI 的导入命令,但我只对在我的单元测试脚本中运行它感兴趣。
基于
\Doctrine\DBAL\Tools\Console\Command\ImportCommand
我正在努力理解如何完全从 PHP 中实现这一点,如果我能提供帮助,而不使用 exec。
谁能指出我正确的方向?
谢谢
我有一个 SQL 脚本,打算在运行单元测试时用作数据夹具。我知道 Doctrine DBAL 有一个用于 CLI 的导入命令,但我只对在我的单元测试脚本中运行它感兴趣。
基于
\Doctrine\DBAL\Tools\Console\Command\ImportCommand
我正在努力理解如何完全从 PHP 中实现这一点,如果我能提供帮助,而不使用 exec。
谁能指出我正确的方向?
谢谢
查看 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;
}