2012-08-13 2 views
1

pure SQL을 사용하여 만들어진 CakePHP에서 모든 데이터베이스 업데이트, 삽입 또는 삭제를 기록하는 방법은 무엇입니까?CakePHP로 데이터베이스 업데이트 기록

예 :

$ this-> 자동차 -> 쿼리 ('업데이트 자동차 색상을 설정 = "빨간색"');

+0

http://book.cakephp.org/2.0/ko/core-libraries/logging.html –

답변

1

사용중인 데이터 소스를 확장하고 _execute() 메서드를 재정 의하여 로그하고 부모에게 다시 전달하십시오.

예를 들어, 현재 dbo_mysql을 사용한다고 가정 해 보겠습니다.

class DATABASE_CONFIG { 

    var $default = array(
      'driver' => 'mysql', 
      // ... 
    ) 
} 

그래서 'mysql_with_log'에서 '드라이버'를 변경하고 파일 응용 프로그램/모델/ 데이터 소스/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); 
    } 
} 
?> 
을 그 당신의 DB를 설정 이런 식으로 뭔가 의미

여기에 Reference link입니다.

Cake debug kit을 사용할 수도 있습니다.

이 플러그인은 SQL 로그를 저장하는데도 도움이됩니다. 다음은 download Debug Kit에 대한 링크입니다.

+0

업데이트/삭제하기 전에 데이터베이스에 있던 콘텐츠도 로깅해야합니까? –

+0

이를 위해서는 새로운 데이터로 항상 삽입 쿼리를 작성하고 주어진 레코드에 대해 이전 항목에 대해'status = 'disabled''를 설정해야합니다. –