CakePHP - журнал SQL показывает рабочий запрос, который возвращает строку, но переменная результатов равна NULL? - PullRequest
0 голосов
/ 26 августа 2011

Итак, вот мой код контроллера:

public function admin_index(){
    $clients = $this->paginate();
    $this->set(compact('clients'));
}

А вот соответствующий запрос из моего дампа SQL для этой страницы:

SELECT `Client`.`id`, `Client`.`user_id`, `Client`.`first_name`, `Client`.`last_name`, `Client`.`company`, `Client`.`phone`, `Client`.`created`, `Client`.`modified`, (IF(LENGTH(company) > 0,company,CONCAT(first_name," ",last_name))) AS `Client__name` FROM `clients` AS `Client` WHERE 1 = 1 LIMIT 20  

Этот запрос возвращает 1 строку (ниже Num строк , отображается 1, просто для ясности:).

В представлении (или контроллере) var_dump ($ clients) дает NULL

Я не могупонять, почему это происходит!

Ответы [ 2 ]

0 голосов
/ 26 августа 2011

Ну, я чувствую себя как чурбан ...

Код ошибки был на самом деле в файле модели, client.php.

public function afterFind(){
    //todo
}

Я планировал написать здесь немного кода, но пренебрег. afterFind должен вернуть массив результатов. Я этого не делал, поэтому все вызовы Client :: find (т.е. через ClientsController :: paginate) возвращали NULL, даже не пустой массив.

0 голосов
/ 26 августа 2011

В контроллере смена:

$this->set(compact('clients'));

для

$this->set('clients', compact('clients'));

Потому что если переменная в представлении не имеет имени, вы не сможете получить к ней доступ.

...