CakePHP:如何从视图中查找相关字段值

CakePHP:如何从视图中查找相关字段值,cakephp,Cakephp,我对MVC有点了解,但我对CakePHP还不熟悉。我想我的问题很简单,但无论我尝试了多少种方法,我都无法检索到我正在寻找的数据 让我们从两个模型开始:用户和活动。 用户--(有许多活动) -身份证 -名字 活动(属于用户) -身份证 -用户id(与用户id相关) -创建人(与用户id相关) 现在,在“我的活动”视图中,用户id和创建人都显示为用户名…这是我想要的,但在“我的用户视图”中。cpt bake在“用户信息”下给了我一个部分,列出了与我正在查看的用户关联的活动,但在此列表中,仅显示了用户

我对MVC有点了解,但我对CakePHP还不熟悉。我想我的问题很简单,但无论我尝试了多少种方法,我都无法检索到我正在寻找的数据

让我们从两个模型开始:用户和活动。 用户--(有许多活动) -身份证 -名字

活动(属于用户) -身份证 -用户id(与用户id相关) -创建人(与用户id相关)

现在,在“我的活动”视图中,用户id和创建人都显示为用户名…这是我想要的,但在“我的用户视图”中。cpt bake在“用户信息”下给了我一个部分,列出了与我正在查看的用户关联的活动,但在此列表中,仅显示了用户id

以下是myusers/view.cpt中的烘焙代码

<?php
    $i = 0;
    foreach ($user['Activity'] as $activity): ?>
    <tr>
        <td><?php echo $activity['id']; ?></td>
        <td><?php echo $activity['title']; ?></td>
        <td><?php echo $activity['description']; ?></td>
        <td><?php echo $activity['user_id']; ?></td>
        <td><?php echo $activity['created_by']; ?></td> //I Want the User's NAME not iD
        <td><?php echo $activity['due_date']; ?></td>   //I Want the User's NAME not iD
        <td><?php echo $activity['created']; ?></td>
        <td><?php echo $activity['modified']; ?></td>
        <td><?php echo $activity['cfc_id']; ?></td>
        <td class="actions">
            <?php echo $this->Html->link(__('View'), array('controller' => 'activities', 'action' => 'view', $activity['id'])); ?>
            <?php echo $this->Html->link(__('Edit'), array('controller' => 'activities', 'action' => 'edit', $activity['id'])); ?>
            <?php echo $this->Form->postLink(__('Delete'), array('controller' => 'activities', 'action' => 'delete', $activity['id']), null, __('Are you sure you want to delete # %s?', $activity['id'])); ?>
        </td>
    </tr>
<?php endforeach; ?>

//我要的是用户名而不是iD
//我要的是用户名而不是iD

我知道我将不得不到处这样做(因为我所有的模型都是基于一个用户的),检索这些数据的正确方法是什么。我已尝试向模型和用户/活动控制器添加方法,但似乎无法正确访问这些方法。

将此代码放入您的
活动中。php
模型类:

public $belongsTo = array('User' => array('className' => 'User',
                      'foreignKey' => 'user_id'),
              'Creator' => array('className' => 'User',
                         'foreignKey' => 'created_by'));
在控制器的类方法中:

$this->Activity->find('all', array('conditions' => array('Activity.user_id' => $user_id)));
在您的视图文件中:

<?php
    $i = 0;
    foreach ($user['Activity'] as $activity): ?>
    <tr>
        <td><?php echo $activity['id']; ?></td>
        <td><?php echo $activity['title']; ?></td>
        <td><?php echo $activity['description']; ?></td>
        <td><?php echo $activity['User']['username']; ?></td> //username is the name of user
        <td><?php echo $activity['Creator']['username']; ?></td> //username is the name of user
        <td><?php echo $activity['due_date']; ?></td>
        <td><?php echo $activity['created']; ?></td>
        <td><?php echo $activity['modified']; ?></td>
        <td><?php echo $activity['cfc_id']; ?></td>
        <td class="actions">
            <?php echo $this->Html->link(__('View'), array('controller' => 'activities', 'action' => 'view', $activity['id'])); ?>
            <?php echo $this->Html->link(__('Edit'), array('controller' => 'activities', 'action' => 'edit', $activity['id'])); ?>
            <?php echo $this->Form->postLink(__('Delete'), array('controller' => 'activities', 'action' => 'delete', $activity['id']), null, __('Are you sure you want to delete # %s?', $activity['id'])); ?>
        </td>
    </tr>
<?php endforeach; ?>

//username是用户的名称
//username是用户的名称

谢谢,但我已经有了相同的属于代码,但是当我使用$activity['User']['name']代码时,我得到了错误“注意(8):未定义索引:User[APP/View/Users/View.ctp,第76行]”问题是我在userscoontroller View.ctp中,当我查看可用的数据数组时,我得到了用户(我正在查看的当前用户)以及用户拥有的关联活动,包括所有者和创建者。但是这个数组不会向下循环,通过关联的用户返回Activitie的created_by和User_id。但如果发生这种情况,这不会产生一个无限循环吗?那我怎么才能知道这个名字呢?从视图调用方法到控制器以锁定用户名?