Я боролся с этим кодом:CakePHP возвращает пустой, но SQL запрос содержит результаты
function getNextActionFObyBalance($when) {
$theQuery = $this->find('first', array(
'fields' => array(
'Contract.id',
'Contract.start_balance'
),
'conditions' => array(
'AND' => array(
'Status.next_action_by' => 'frontoffice',
'Status.status_type' => 'active',
'Status.visibility' => 'frontoffice',
'OR' => array(
'Contract.next_action_on' => null,
'Contract.next_action_on <=' => $when
)
)),
'order' => 'Contract.start_balance DESC',
'recursive' => 0,
));
return $theQuery;
}
Я позволил протоколирования на сервере MySQL в этом является то, что сервер указывает на то, что CakePHP запрашивает:
SELECT `Contract`.`id`, `Contract`.`start_balance` FROM `contracts` AS `Contract` LEFT JOIN `statuses` AS `Status` ON (`Contract`.`status_id` = `Status`.`id`) LEFT JOIN `users` AS `User` ON (`Contract`.`user_id` = `User`.`id`) WHERE ((`Status`.`next_action_by` = 'frontoffice') AND (`Status`.`status_type` = 'active') AND (`Status`.`visibility` = 'frontoffice') AND (((`Contract`.`next_action_on` IS NULL) OR (`Contract`.`next_action_on` <= '2010-09-13 10:13:04')))) ORDER BY `Contract`.`start_balance` DESC LIMIT 1
Если я использую это в инструменте phpmyadmin, я получаю именно то, что ожидал 1 запись с двумя полями. BUT CakePHP просто дает мне пустой набор результатов. Может кто-нибудь просветить меня?
PS код работал, но я могу выяснить, что изменилось!
У вас есть что-нибудь в методе afterFind любой из ваших моделей? AppModel, или текущая модель? –