1

私の目的は、関連する子モデル(削除された後)のレコードをビューに表示することです。再帰値を「1」に設定すると、現在のモデル、その所有者、および関連するモデルが返されることを理解しています。

方法がわからないのは、これをビューに表示することです。

私のアプローチは、関連付けられたモデルIDの値を保持する変数をコントローラーに作成することでしたが、それは機能しませんでした。

*トーナメントにスラッガブルな振る舞いを使用していることにも言及する必要があります。そのため、使用されるのは$ idではなく、$slugです。

モデルビューコントローラーの詳細は次のとおりです。

モデル

トーナメント-多くのトーナメントがあります詳細

tournamentDetails-多くの更新があります

更新-tournamentDetailsに属しています

トーナメントコントローラーアクション=表示

class TournamentsController extends AppController 

function view($slug = null) {
  if (!$slug) {
      $this->Session->setFlash(__('Invalid Tournament.', true));
      $this->redirect(array('action'=>'index'));
  }
$this->Tournament->recursive = 1;
$tournament = $this->Tournament->findBySlug($slug);
$updates = $this->Tournament->TournamentDetail->Update->find('all', array('conditions'=>array('update.tournament_detail_id' => $this->data['tournament_details'] ['id'] )) );
$this->set(compact('tournament','updates' ));

トーナメントビュー。これは、「トーナメントの詳細」および(理想的には)関連するトーナメントの詳細「更新」を表示します。

<h2><?php echo $tournament['Tournament']['name']; ?></h2>

<?php foreach ($tournament['TournamentDetail'] as $tournamentDetail): ?>
 <h1><?php echo $tournamentDetail ['title']; ?></h1>
 <p><?php echo $tournamentDetail ['body']; ?></p>
<?php endforeach; ?>

<?php foreach ($updates['Update'] as $update): ?>
 <h4>Update: <?php echo $update  ['date']; ?></h4>
 <p> <?php echo $update ['Update'] ['title']; ?></p>
 <p><?php echo $update ['Update'] ['body']; ?></p>
<?php endforeach; ?>

$ updateをデバッグすると、これがすべて表示されます。

Array
(
)

ここで何が間違っているのかわかりません。

以下を使用して検索条件を作成するのは正しくありませんか?

 ('conditions'=>array('update.tournament_detail_id' => $this->data['tournament_details'] ['id'] )

助けてくれてありがとう。ポール

4

1 に答える 1

2

Containable Behaviorを使用して、関連付けられたモデル、関連付けられたモデルから関連付けられたモデルなどから取得するフィールドを詳細に指定できます。$tournament次に、リンクの例のように、配列内のすべてのデータを検索します。

編集(OPコメントに応じて)。findBy問題は魔法の方法を使っているのではないかと思います。findこの例のように、これを標準に置き換える必要があります

$tournament = $this->Tournament->find('first', array(
    'conditions' => array(
        'slug' => $slug
    ),
    'contain' => array(//Put here the settings for Containable
    )
));
于 2011-02-25T16:42:35.120 に答える