복붙노트

[SQL] 어떻게 컨트롤러 CakePHP의 SQL 덤프를 볼 수 있습니까?

SQL

어떻게 컨트롤러 CakePHP의 SQL 덤프를 볼 수 있습니까?

하나는 CakePHP의 수요에 자사의 SQL 로그를 덤프시킬 수있는 방법이 있습니까? 나는 내 컨트롤러에서 지점까지 코드를 실행하고 SQL이 실행 된 것을보고 싶습니다.

해결법

  1. ==============================

    1.이 시도:

    이 시도:

    $log = $this->Model->getDataSource()->getLog(false, false);
    debug($log);
    

    http://api.cakephp.org/2.3/class-Model.html#_getDataSource

    당신은 당신이 하나 이상의 생각이있는 경우 각 데이터 소스에 대해이 작업을 수행해야합니다.

  2. ==============================

    2.쿼리를 표시하는 네 가지 방법이 있습니다 :

    쿼리를 표시하는 네 가지 방법이 있습니다 :

  3. ==============================

    3.당신이 CakePHP는 1.3을 사용하는 경우, 당신은 SQL 출력에 대한 귀하의 의견이 넣을 수 있습니다 :

    당신이 CakePHP는 1.3을 사용하는 경우, 당신은 SQL 출력에 대한 귀하의 의견이 넣을 수 있습니다 :

    <?php echo $this->element('sql_dump'); ?>
    

    그래서 당신은 당신이 그것을보고 싶어 할 때마다 컨트롤러에이 전화를 한 후 위의 전용 라인을 포함하는 'SQL'라는 뷰를 작성하고 수 :

    $this->render('sql');
    

    (또한 응용 프로그램 / 설정 / core.php 적어도 2 디버그 레벨을 설정 기억)

    출처

  4. ==============================

    4.CakePHP는 2.0 AppModel.php에서이 함수를 작성

    CakePHP는 2.0 AppModel.php에서이 함수를 작성

    function getLastQuery()
    {
        $dbo = $this->getDatasource();
        $logs = $dbo->getLog();
        $lastLog = end($logs['log']);
        return $lastLog['query'];
    }
    

    컨트롤러에서 이것을 사용하려면 쓰기 : 에코 $ this-> YourModelName-> getLastQuery ();

  5. ==============================

    5.크게 CakePHP의는 $ this-> 모델 -> lastQuery ()가 발생하지 않는 것을 실망;입니다 여기에 Handsofaten의 수정 된 버전을 포함하여이 개 솔루션은 다음과 같습니다 :

    크게 CakePHP의는 $ this-> 모델 -> lastQuery ()가 발생하지 않는 것을 실망;입니다 여기에 Handsofaten의 수정 된 버전을 포함하여이 개 솔루션은 다음과 같습니다 :

    당신의 /app_model.php 파일 추가에, 마지막 쿼리 실행을 인쇄하려면 :

    function lastQuery(){
        $dbo = $this->getDatasource();
        $logs = $dbo->_queriesLog;
        // return the first element of the last array (i.e. the last query)
        return current(end($logs));
    }
    

    그럼 당신은 실행할 수있는 출력을 인쇄합니다 :

    debug($this->lastQuery()); // in model
    

    또는

    debug($this->Model->lastQuery()); // in controller
    

    모든 쿼리는 컨트롤러 (또는 구성 요소 등) 실행에 주어진 페이지 요청에 실행 인쇄하려면 :

    $this->render('sql');
    

    그것은 가능성이 누락 된 뷰 오류가 발생합니다, 그러나 이것은 최근의 쿼리에 액세스보다 낫다!

    (AS Handsofaten 케이크 / libs와 /보기 / 요소 /의 /elements/sql_dump.ctp가 말했다,하지만 난 sql.ctp보기를 생성하지 않고 위의 작업을 수행 할 수 있었다. 캔 누군가가 설명?)

  6. ==============================

    6.CakePHP는 1.2 ..

    CakePHP는 1.2 ..

    $db =& ConnectionManager::getDataSource('default');
    $db->showLog();
    
  7. ==============================

    7.어떤 2.0 호환도 나를 위해 마지막으로 일한 것은 내 레이아웃에 추가하는 것입니다 (또는 모델)

    어떤 2.0 호환도 나를 위해 마지막으로 일한 것은 내 레이아웃에 추가하는 것입니다 (또는 모델)

    <?php echo $this->element('sql_dump');?>
    

    또한 구성 / core.php에 살고 있고 디버그 변수에 따라한다

  8. ==============================

    8.케이크에 대한 DebugKit를 플러그인하는 일을 할뿐만 아니라 것입니다. https://github.com/cakephp/debug_kit

    케이크에 대한 DebugKit를 플러그인하는 일을 할뿐만 아니라 것입니다. https://github.com/cakephp/debug_kit

  9. from https://stackoverflow.com/questions/3647065/how-can-i-see-cakephps-sql-dump-in-the-controller by cc-by-sa and MIT license