Cakephp возвращает пустой, но SQL-запрос имеет результаты - PullRequest
1 голос
/ 13 сентября 2010

Я боролся с этим кодом:

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 запись с двумя полями. НО CakePHP просто дает мне пустой набор результатов.Может кто-нибудь просветить меня?

PS код работал, но я могу понять, что изменилось!

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Проблема была с заглушкой, чтобы сделать некоторую постобработку после поиска.Проблема в том, что я полностью забыл вернуть $ результаты;Я нашел ошибку, выполнив пошаговую отладку метода find в model.php.Обнаружил, что после находки был вызван в какой-то момент и пошел, чтобы проверить мой afterFind.У меня ушло около 4 часов на простую ошибку, но я учусь!

0 голосов
/ 13 сентября 2010

Предположительно, этот метод определен в models / contract.php?

Заявление recursive = 0 кажется мне немного подозрительным. Правильно ли связаны модели в соответствующих файлах моделей?

Вы пробовали loadModel на случай, если ассоциации не работают должным образом?

Было бы полезно увидеть определения отношений из соответствующих моделей.

- EDIT-- Я отформатировал код из вашего комментария здесь, так как я не могу отредактировать ваш OP

var $belongsTo = array(
    'Status' => array( 
        'className' => 'Status', 
        'foreignKey' => 'status_id', 
                     ), 
    'User' => array( 
        'className' => 'User', 
        'foreignKey' => 'user_id', 
                     )
                 ); 

var $hasMany = array( 
    'Transaction' => array( 
        'className' => 'Transaction', 
        'foreignKey' => 'contract_id', 
        'dependent' => false, 
                      )
                 );
...