Zend Frameworkで実行したクエリのSQLを取得する方法

シェアする

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を取得する際に参考になれば、幸いです。

シェアする

フォローする