0

CakePhp の関連テーブルに関する非常に単純な問題があります。多対多の関係を持つ2つのテーブルがあります。

IDではなく、関連するオブジェクトの名前を表示したいだけです。

コンソールによって作成された私のインターフェイスは、これとまったく同じです。ここに画像の説明を入力

CakePhp docsで再帰パラメーターを見つけました。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>

4

2 に答える 2

1

CakePHP のContainable Behaviorを使用します。チュートリアル/説明はどこにでもあり、少なくとも 500 ほどあるので、私は StackOverflow に自分自身を書いています。

基本的に、CakePHP の Containable Behavior では、関連付けが正しく設定されている限り、データで返してほしいものすべてを選択できます。

Containable について読んで、試してみてください。それでもうまくいかない場合は、「CakePHP でコンテナブルを動作させることができません」という質問 (またはそのようなもの) として投稿してください。

于 2012-07-17T14:51:24.420 に答える