-1

这个问题困扰了我好几天。当我在我的 Department 模型上执行 find('all') 时,没有获取任何关联的数据。这是我的部门模型:

<?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'));

感觉我的模型有问题,因为我对任何其他模型都没有问题并返回相关数据,包括与部门相关的数据。例如,我可以找到与某个地区相关的所有部门。

提前致谢!

4

2 回答 2

1

不正确的模型文件命名是模型文件未被读取和使用表的 AppModel 实例蛋糕的最常见原因。所以检查你的模型的文件名。确保它是Department.php. 在您的控制器中,debug(get_class($this->Department));它应该返回“Department”而不是“AppModel”。

假设您的模型文件已正确加载并且您仍然有问题,最可能的原因是模型的$recursive属性设置为 -1,可能在 AppModel 中。

于 2013-04-03T07:55:25.377 回答
0

您应该使用以下内容:

$this->Department->recursive = 1;
$departments = $this->Department->find('all');
$this->set(compact('departments'));
于 2013-04-03T10:38:50.393 回答