$this->set('projectLeaders',$this->Project->ProjectLeader->find('list'));
这将仅列出来自project_leaders
表,最有可能的是,因为表本身不包含名称/标题字段(蛋糕会自动选择为displayField
)就像这样:
array(
1 => 1
)
使用适当的查找
要获得有意义的项目负责人名单,您需要确保您能够加入project_leaders
and hr_employees
一种方法是使用可容纳的 http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html行为并简单地指定要在列表中使用哪些字段:
$projectLeaders = $this->Project->ProjectLeader->find('list', array(
'contain' => array(
'HrEmployee'
),
'fields' => array(
'ProjectLeader.id',
'HrEmployee.name',
)
));
$this->set(compact('projectLeaders'));
您的数据库结构适合您的需求吗?
拥有一个相当于说“此用户是管理员”的表可能不是最好的主意 - 如果该表更容易避免数据问题,并为您提供更简单的查询project_leaders
是(仅)您的布尔字段hr_employees
表和project_leader_id
指向hr_employee
table, not其他一些数据抽象。
当然,我不知道你的整个模式,很可能有一个单独的理由project_leaders
table.
或者 - 非规范化
如果您添加名称字段project_leaders
- 你不需要加入就能知道项目负责人的名字或任何有趣的事情:
alter table project_leaders add name varchar(255) after id;
update project_leaders set name = (select name from hr_employees where hr_employees.id = hr_employee_id);
通过这种方式,您可以通过一次查询/联接知道谁是相关项目负责人,而不需要进行两次联接来获取员工姓名。