純粋な SQL を使用して作成された CakePHP でのすべてのデータベースの更新、挿入、または削除をログに記録する方法は?
例:
$this->Car->query('update cars set color = "red" ');
純粋な SQL を使用して作成された CakePHP でのすべてのデータベースの更新、挿入、または削除をログに記録する方法は?
例:
$this->Car->query('update cars set color = "red" ');
使用しているデータソースを拡張し、メソッドをオーバーライドし_execute()
てログに記録し、親に戻します。
たとえば、現在 dbo_mysql を使用しているとします。つまり、db 構成は次のようになります。
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
// ...
)
}
「driver」を「mysql_with_log」に変更し、ファイル app/model/datasources/dbo/mysql_with_log.php を作成します。
<?php
require (LIBS . 'model' . DS . 'datasources' . DS . 'dbo' . DS .'dbo_mysql.php');
class DboMysqlWithLog extends DboMysql {
function _execute($sql) {
$this->log($sql);
return parent::_execute($sql);
}
}
?>
ここに参照リンクがあります。
Cake デバッグ キットを使用することもできます。
このプラグインは、SQL ログの保存にも役立ちます。Debug Kit をダウンロードするためのリンクは次のとおりです。