3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CakePHPで実行されたSQL文を表示する

Posted at

CakePHPで実行されたSQL文を表示する方法です。

はじめに

CakePHPでORMを用いる際など、クエリの実行結果のみならず 実行されたSQL文を知りたい ケースは多々あると思います。

今回はCakePHPの3系と4系それぞれで、実行されたSQL文をdebugログに表示する方法をお伝えします。

CakePHP 3.X

$connection = \Cake\Datasource\ConnectionManager::get('default'); // DB接続を取得
$connection->logQueries(true); // SQL Queryのログ出力を有効化
$this->Model->find()->all(); // SQL文を確認したいSQLを実行
$connection->logQueries(false); // SQL Queryのログ出力を無効化

CakePHP 4.X

$connection = \Cake\Datasource\ConnectionManager::get('default'); // DB接続を取得
$connection->enableQueryLogging(true); // SQL Queryのログ出力を有効化
$this->Model->find()->all(); // SQL文を確認したいSQLを実行
$connection->disableQueryLogging(); // SQL Queryのログ出力を無効化

出力先

debugログの出力設定に応じたファイルへSQL文が出力されます。
デフォルトでは(CakePHPインストールフォルダ)/cakephp/logs/debug.logとなっています。

注意点

  • \Cake\Datasource\ConnectionManager::get('default');では指定するDBを間違えないようにしましょう
    • (レプリカサーバを利用していたのにget('default')get('replica')と変更し忘れて「動かない!」と騒いでしまった思い出があります・・・)

参考

公式リファレンス

CakePHP 4.X

CakePHP 3.X

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?