1

純粋な SQL を使用して作成された CakePHP でのすべてのデータベースの更新、挿入、または削除をログに記録する方法は?

例:

$this->Car->query('update cars set color = "red" ');

4

1 に答える 1

1

使用しているデータソースを拡張し、メソッドをオーバーライドし_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 をダウンロードするためのリンクは次のとおりです。

于 2012-08-13T12:14:26.927 に答える