中野's workspace

  • Profile
  • Privacy
  • Contact

2020/03/15

Doctrineで発行されるSQLを確認する

  • #PHP
  • #Symfony
  • #Doctrine

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が発行されるか確認することが出来る。

このエントリーをはてなブックマークに追加