2020/03/15
Doctrineで発行されるSQLを確認する
SymfonyでDoctrineを使用していて、発行されるSQLを確認したくなったので、やり方を記載する。
$replaceTargets = [];
foreach ($qb->getQuery()->getParameters()->toArray() as $key => $parameters) {
$value = $parameters->getValue();
$replaceTarget = '';
if (is_array($value)) {
$n = [];
foreach ($value as $row) {
$n[] = "'".$row."'";
}
$replaceTarget = implode(',', $n);
} else {
$replaceTarget = "'".$value."'";
}
$replaceTargets[] = $target;
}
$replace = vsprintf(str_replace('?', '%s', $qb->getQuery()->getSQL()), $replaceTargets);
var_dump($replace);
上記のように書くことでsetParameterした値も含め、どのようなSQLが発行されるか確認することが出来る。