2012-07-17 62 views
0

我在CakePhp中有一个非常简单的问题。我有两张桌子,有很多很多关系。在Cakephp中显示相关表中的字段

我只是想显示相关对象的名称,而不是它的ID。

我由控制台制造接口是完全一样的,因为这一个:enter image description here

我发现递归参数在CakePhp docs,我发现很多相关的问题在计算器上,可是还是失败了。

这里是控制器:

/** 
* view method 
* 
* @throws NotFoundException 
* @param string $id 
* @return void 
*/ 
public function view($id = null) { 
    $this->Application->id = $id; 
    if (!$this->Application->exists()) { 
     throw new NotFoundException(__('Invalid application')); 
    } 
    $this->set('application', $this->Application->read(null, $id)); 
} 

这里是图。

<div class="related"> 
<h3><?php echo __('Related Application Memberships'); ?></h3> 
<?php if (!empty($application['ApplicationMembership'])): ?> 
<table cellpadding = "0" cellspacing = "0"> 
<tr> 
    <th><?php echo __('Id'); ?></th> 
    <th><?php echo __('Chantier Id'); ?></th> 
    <th><?php echo __('Application Id'); ?></th> 
    <th><?php echo __('Ponderation'); ?></th> 
    <th class="actions"><?php echo __('Actions'); ?></th> 
</tr> 
<?php 
    $i = 0; 
    foreach ($application['ApplicationMembership'] as $applicationMembership): ?> 
    <tr> 
     <td><?php echo $applicationMembership['id']; ?></td> 
     <td><?php echo $applicationMembership['chantier_id']; ?></td> 
     <td><?php echo $applicationMembership['application_id']; ?></td> 
     <td><?php echo $applicationMembership['ponderation']; ?></td> 
     <td class="actions"> 
      <?php echo $this->Html->link(__('View'), array('controller' => 'application_memberships', 'action' => 'view', $applicationMembership['id'])); ?> 
      <?php echo $this->Html->link(__('Edit'), array('controller' => 'application_memberships', 'action' => 'edit', $applicationMembership['id'])); ?> 
      <?php echo $this->Form->postLink(__('Delete'), array('controller' => 'application_memberships', 'action' => 'delete', $applicationMembership['id']), null, __('Are you sure you want to delete # %s?', $applicationMembership['id'])); ?> 
     </td> 
    </tr> 
<?php endforeach; ?> 
</table> 

+0

如果你已经正确设置你的协会(我还没有读到博客文章),所有你需要的信息将是'application'阵列英寸 您可以快速查看您在视图/控制器中使用'debug($ application);'查看的数据。发布你的结构(如果它是很多,使用[pastebin](http://www.pastebin.com)) – Ross 2012-07-17 13:31:13

+0

我得到的信息存储在桥表中,所以在sql一个连接,我需要两个。正如你所看到的,包含联络人信息的模型被称为EnjeuxMembership。 – 2012-07-17 13:36:16

+0

这是debug()信息:http://pastebin.com/qHE0kthk – 2012-07-17 13:44:58

回答

1

使用CakePHP的Containable Behavior。无处不在的教程/解释包括至少500个我在StackOverflow上写过我自己。

基本上,只要关联设置正确,CakePHP的可容纳行为允许您选择和选择任何想要返回的数据。

阅读关于Containable,并尝试它。如果它仍然不起作用,请将其作为“Can not get containable to work in CakePHP”问题(或类似的东西)

+0

谢谢,那正是我所需要的。 – 2012-07-17 15:31:45

0

如果您在2015年,试图找出解决方案为此cakephp3的东西在这里,可以帮助:

表 - >人,病人,药品,drugs_patients 病人PERSON_ID drugs_patients是许多药物和患者之间有很多,但有其他一些领域,如的startDate和结束日期

现在您在药物控制人员处添加药物,并且您希望使用来自患者的身份标识和来自人员的姓名填充选定患者。

这是小菜一碟:

$患者= $这个 - > DrugsPatients-> Patients->找到( '名单',[ '关键字段'=> '身份证', 'valueField'=>“的人。名称 ']) - >含有([' 人']);

=)

相关问题