0

MVC は少し理解していますが、CakePHP は初めてです。私の質問は簡単だと思いますが、何度試しても探しているデータを取得できません。

ユーザーとアクティビティの 2 つのモデルから始めましょう。ユーザー -- (多くのアクティビティがあります) -id -name

アクティビティ (ユーザーに属します) -id -user_id (ユーザー ID に関連) -created_by (ユーザー ID に関連)

さて、アクティビティビューでは、user_id と created_by の両方がユーザー名とともに表示されます...これは私が望むものですが、ユーザービューでは、.cpt ベイクにより、ユーザーに関連付けられたアクティビティをリストするユーザー情報の下にセクションが表示されました閲覧しているのですが、この一覧ではユーザーのIDしか表示されません。

これが私のUsers/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; ?>

このデータを取得する適切な方法は何ですか? モデルとユーザー/アクティビティ コントローラーにメソッドを追加しようとしましたが、メソッドに正しくアクセスできないようです。

4

1 に答える 1

0

このコードをActivity.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; ?>
于 2013-09-20T09:25:57.373 に答える