SQL の確認
【環境】
OpenPNE:3.8.15
Symfony:1.4.13
doctrine:1.2.4
OpenPNE:3.8.15
Symfony:1.4.13
doctrine:1.2.4
モデル
モデル生成時に自動的に生成される Table クラスで書く場合。
- $result = $this->createQuery('p')
- ->leftJoin('p.Translation t WITH t.lang = ?', $culture)
- ->andWhere('p.id = ?', 1)
- ->execute();
上記のようにすることで目的のレコードを取得できるけど
createQuery メソッドで Doctrine_Query が返ってきているので
最後の execute メソッドを getSqlQuery に変更することで、生 SQL 文を取得できる。
- echo $this->createQuery('p')
- ->leftJoin('p.Translation t WITH t.lang = ?', $culture)
- ->andWhere('p.id = ?', 1)
- ->getSqlQuery();
実際に利用してみて思った
- $query = $this->createQuery('p')
- ->leftJoin('p.Translation t WITH t.lang = ?', $culture)
- ->andWhere('p.id = ?', 1);
- echo $query->getSqlQuery();
- $result = $query->execute();
こういう風に記述してやると見やすい。
色々な記事で、execute() を切り離して記述しているのは
こういうことがあるからかも?