2015-02-02 6 views
0

이상한 문제가 있습니다. 코스라는 모델이 있습니다. 이 모델은 다른 데이터베이스의 다른 모델과 연관되어 있습니다. 그것은 매우 단순한 구성이며 너무 정교합니다.

$courses = $this->Course->find('all'); 

아무것도 반환되지 않습니다 :

나는이 작업을 실행합니다. 디버그 모드에서 보여주는 SQL은 정확하며 SQL을 수동으로 실행할 때 올바르게 실행되지만 결과는 $ courses 변수에 저장되지 않습니다.

나는 또한이 시도 :

debug($this->Course->find('all')); 

를 다시 -는 SQL은 디버그의 SQL 섹션에 올바르게 표시되어 있지만 기록은 디버그 세션에서 표시되지 않습니다.

이상한 부분에 대한 지금

Query - $this->Model->find('all')

- 나는 변경 '모든'에서 '최초'의 첫 번째 레코드가 표시되고 모든 것이 예상대로 작동합니다.

Query - $this->Model->find('first');

$courses = $this->Course->find('first'); 

나는 다른 컨트롤러에이 문을 이동 시도하고 결과는 동일합니다. sql이 생성되어 제대로 실행되지만 결과는 Cake를 통해 반환되지 않고 변수에 저장됩니다. 디버그 문에서 찾은 내용을 랩핑하면 올바르게 반환되지 않으므로 변수 문제라고 생각하지 않습니다. 변수 문제라면 변수를 방정식에서 제거 할 때 작동하지만 그때도 작동하지 않습니다.

저는 CakePHP 2.5.5입니다. 2.6.1로 업데이트하려고했지만 결과는 동일했습니다.

나는 변수에 SQL을 삽입하고 쿼리로 실행하려고 시도했다. 데이터베이스에 대해 실행되는 SQL은 작동하지만 모델을 사용하여 실행하면 작동하지 않습니다. 모두 찾기와 같은 결과.

$sql = "SELECT " . 
" `Course`.`id`, `Course`.`title`, `Course`.`descr`, `Course`.`created`, `Course`.`modified`, `Course`.`hours`, `Course`.`price`, " . 
" `Course`.`accounting_code_id`, `Course`.`serf_course_id`, `Course`.`comp_code`, `Course`.`course_type`, `Course`.`clinic`, `Course`.`pharmacy`, " . 
" `Course`.`healthcare_professional`, `Course`.`scholarship`, `Course`.`pharmacy_tech`, `Course`.`uan`, `Course`.`available`, `Course`.`acpe`, `AccountingCode`.`id`, " . 
" `AccountingCode`.`code`, `AccountingCode`.`code_description`, `AccountingCode`.`buyer_percentage`, `AccountingCode`.`created`, `AccountingCode`.`modified`," . 
" `AccountingCode`.`deleted`, `AccountingCode`.`created_user_id`, `AccountingCode`.`modified_user_id`, `AccountingCode`.`deleted_user_id`, " . 
" `AccountingCode`.`deleted_record` FROM `cips`.`courses` AS `Course` LEFT JOIN `cips`.`accounting_codes` AS `AccountingCode` ON (`Course`.`accounting_code_id` = " . 
" `AccountingCode`.`id`) WHERE 1 = 1"; 

    $this->Course->recursive = 0; 

    // $allCourses = $this->Course->find('all'); 
    $allCourses = $this->Course->query($sql); 

    debug($allCourses, true, true); 

아이디어가 있으십니까?

+0

'debug ($ this-> Course-> find ('all));'에 오타가 있습니다. 그것은 당신이 사용하고있는 코드입니까? – schnauss

+0

아니요 - 게시물의 오타였습니다. –

+1

코드에서 직접 sql 쿼리를 복사하고 mysql에서 시도하십시오. 결과가 먼저 리턴되는지 확인하십시오. –

답변

0

동료 - 동료의 도움으로이 하나를 알아 냈습니다. 데이터베이스 구성에서 인코딩을 utf8로 지정해야했습니다. 일단 구성을 변경하면 찾기가 예상대로 작동했습니다.

public $default = array(
    'datasource' => 'Database/Mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'llll', 
    'password' => 'pppp', 
    'database' => 'dddd', 
    'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', 
    'encoding'=>'utf8', 
);