这个问题一直困扰着我的大脑。当我在我的部门模型上执行查找('全部')时,不会获取任何关联数据。这是我的部门模型:
<?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
),
);
}
当我找到('all')时,它返回数据库中每个部门的所有字段,但根本没有相关数据。在部门控制器中:
$departments = $this->Department->find('all');
$this->set(compact('departments'));
感觉我在模型中遇到问题,因为我对任何其他模型没有任何问题并返回相关数据,包括与Department相关的数据。例如,我可以找到与某个区相关的所有部门。
提前致谢!
答案 0 :(得分:1)
不正确的模型文件命名是使用表的AppModel实例无法读取和模拟模型文件的最常见原因。因此,请检查模型的文件名。确保它是Department.php
。在你的控制器中,debug(get_class($this->Department));
它应该返回“部门”,而不是“AppModel”。
假设您的模型文件已正确加载并且您仍有问题,最有可能原因是模型的$recursive
属性设置为-1,可能在AppModel中。
答案 1 :(得分:0)
您应该使用以下内容:
$this->Department->recursive = 1;
$departments = $this->Department->find('all');
$this->set(compact('departments'));