Zend Frameworkでデバッグなどをしていて、実行したクエリのSQLを取得したい場合があると思います。
今回の記事では、Zend Frameworkで実行したクエリのSQLを表示する方法について紹介します。
__toString()メソッドをしようする(バージョン 2.1.4以上)
Zend Frameworkで実行したクエリを取得する方法として、__toString()を使用する方法があります。
例えば、productsテーブルから情報を取得する場合、下記にようにすることで、実行したクエリを知ることが出来ます。
$select = $db->select() ->from('products'); $sql = $select->__toString(); echo "$sql\n"; // The output is the string: // SELECT * FROM "products"
Zend_Db_Profilerを使用する
Zend Frameworkで実行したクエリを知る方法として、Zend_Db_Profilerを使用する方法もあります。
例えば、Update文を流した場合、下記のようにすることで流したクエリを知ることが出来ます。
$db->getProfiler()->setEnabled(true); //code $up_value = array('billing'=> '0'); $this->update($up_value,'customer_id ='.$userid.' and address_id <> '.$data['address_Id']); Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQuery()); Zend_Debug::dump($db->getProfiler()->getLastQueryProfile()->getQueryParams()); $db->getProfiler()->setEnabled(false);
getQuery() は、クエリの SQL テキストを返し、getQueryParams() は、 プリペアドクエリを実行する際に使用する、パラメータの値の配列を返します。
詳細は、Zend_Db_Profilerに記載されています。
どのフレームワークを使用していても流したクエリというのは、デバッグの際、確認したいことだと思います。
Zend Frameworkで実行したクエリのSQLを取得する際に参考になれば、幸いです。