在Cakephp中显示相关表中的字段

在Cakephp中显示相关表中的字段,cakephp,relationship,Cakephp,Relationship,我对CakePhp中的相关表有一个非常简单的问题。我有两张桌子,有多对多的关系 我只是想显示相关对象的名称,而不是它的id 控制台制作的界面与此完全相同: 我在中找到了递归参数,在StackOverflow中找到了许多相关问题,但仍然失败 这是控制器: /** * view method * * @throws NotFoundException * @param string $id * @return void */ public function view($id = null) {

我对CakePhp中的相关表有一个非常简单的问题。我有两张桌子,有多对多的关系

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

控制台制作的界面与此完全相同:

我在中找到了递归参数,在StackOverflow中找到了许多相关问题,但仍然失败

这是控制器:

/**
* 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>

使用CakePHP的。到处都有教程/解释,其中至少有500篇是我在StackOverflow上写的

基本上,只要关联设置正确,CakePHP的Containable行为允许您选择数据中返回的任何内容


阅读Containable,并尝试一下。如果它仍然不起作用,请将其作为“无法在CakePHP中使用”问题(或类似问题)发布。

如果您是在2015年,请尝试在cakephp3找到解决方案,这里有一些可能会有所帮助:

表->人员、患者、药物、药物\患者 患者有个人id 药物-患者是药物和患者之间的多对多关系,还有其他领域,如起始日期和结束日期

现在,您在drugsPatients控制器的add中,希望使用来自患者的id和来自人员的名称填充选择的患者

这是小菜一碟:

$patients=$this->DrugsPatients->patients->find('list',['keyField'=>'id','valueField'=>'person.name'])->包含(['People'])


=)

如果您正确设置了关联(我还没有读过那篇博文),那么您需要的所有信息都将出现在
应用程序的
数组中。您可以通过
debug($application)快速查看您拥有的数据在视图/控制器中。发布您的结构(如果很多,请使用)我获取存储在桥接表中的信息,因此在SQLONE连接中,我需要两个。如您所见,包含联系人信息的模型称为EnjeuxMembership。以下是debug()信息:
$application['application']['name']
包含id为
的记录的
名称
(根据URL中的请求)。你到底想实现什么?谢谢,这正是我所需要的。