2013-04-03 6 views
-1

Эта проблема была избиения моих мозгов в течение нескольких дней. Когда я выполняю поиск («все») в моей модели отдела, никаких связанных данных не извлекается. Вот мой отдел модели:cakePHP связанные данные не получены

<?php 
App::uses('AppModel', 'Model'); 

class Department extends AppModel { 

public $displayField = 'name'; 
//The Associations below have been created with all possible keys, those that are not needed can be removed 

public $belongsTo = array(///check 
    'District' => array(
     'className' => 'District', 
     'foreignKey' => 'district_id' 
    ) 
); 
public $hasMany = array(
    'Group' => array(
     'className' => 'Group', 
     'foreignKey' => 'department_id' ///check 
    ), 
    'Request'=>array(
     'className' => 'Request', 
     'foreignKey' => 'department_id', 
    ), 
    'DepartmentPosition'=>array(
     'className'=>'DepartmentPosition', 
     'foreignKey'=>'department_id', 
     'dependent'=>true 
    ), 
); 

}

Когда я нахожу («все»), он возвращает все поля из каждого отдела в базе данных, но не связанные с ним данные на всех. в контроллере отделов:

$departments = $this->Department->find('all'); 
$this->set(compact('departments')); 

Такое ощущение, что у меня есть проблемы в модели, потому что я не имею никаких проблем ни с одной из других моделей и возвращение связанных данных, в том числе один, связанной с Департаментом. Например, я могу найти все отделы, относящиеся к округу.

Заранее благодарен!

+0

вы можете оставить все параметры находки(). –

+0

Да, на данный момент их нет. Я просто нахожу find ('all') на этом этапе, а затем в представлении do debug ($ department). Спасибо @Danial – Todd

ответ

1

Неправильное имя файла модели - это наиболее распространенная причина, по которой ваш файл модели не читается, и торт с использованием экземпляра AppModel для таблицы. Поэтому проверьте имя файла вашей модели. Убедитесь, что это Department.php. В вашем контроллере debug(get_class($this->Department)); его следует вернуть «Департамент», а не «AppModel».

Предполагая, что ваш файл модели загружен правильно, и у вас все еще есть проблема, наиболее вероятная причина - свойство модели $recursive установлено равным -1, возможно, в AppModel.

+0

отличный ответ. спасибо за отладочный трюк - очень умный. – Todd

+0

Было именование. – Todd

0

Вы должны использовать следующее:

$this->Department->recursive = 1; 
$departments = $this->Department->find('all'); 
$this->set(compact('departments')); 
+0

Как я уже сказал в вопросе, это не проблема кода контроллера. Я получаю НЕТ связанных данных, независимо от того, что я набираю в контроллере. – Todd

Смежные вопросы