规范化数据模型 - 在CakePHP中查找简单连接

时间:2014-09-27 22:22:26

标签: php mysql cakephp

我有以下数据模型

`Table: Workflow
Field: workflow_id
Field: workflow_name
Field: workflow_step_id`

`Table: Workflow_Step
Field: workflow_step_id
Field: workflow_step_name
Field: workflow_id`

`Table: Workflow_Step_Detail
Field: workflow_step_detail_id
Field: workflow_step_detail_name
Field: country_id
Field: state_id
Field: workflow_step_id`

在控制器类

`<?php 
 $this->set('workflow', $this->Workflow->findByWorkflowId(1)); // this works fine
?>`

在视图文件中

`<?php 
$steps = $workflow['Workflow']['WorkflowStep']; //this gets all the steps
$detail = $steps[0]['WorkflowStepDetail']; // this also works fine
echo $detail['state_id']; //this also works fine
echo $detail['state_name']; // this is what i want 
?>`

从上面可以看出,这是一个高度标准化的数据模型。我的CakePHP数据结构与hasManybelongsTo一起工作正常 - 当我执行findByWorkflowId($id)时,它会加载所有递归数据结构。但是,当我想显示WorkflowStepDetails时 - 我不想只显示country_idstate_id - 我想显示countrystate查找中的相应名称表。我无法弄清楚如何在CakePHP findBy结构

中固有这种连接

1 个答案:

答案 0 :(得分:0)

您需要暂时“重新绑定”模型。这有点像黑客,但直到版本3.x:

http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations