私の目的は、関連する子モデル(削除された後)のレコードをビューに表示することです。私の問題は、次のクエリを出力しようとすると、「通知(8):未定義のインデックス:」エラーメッセージが表示されることです。
トーナメントには多くのtournamentDetailsがあり、tournamentDetailsには多くの更新があります。トーナメントビューに表示される各トーナメント詳細のすべての更新を表示しようとしています。
だから私の質問は、エラーメッセージを適切に解決し、トーナメントビューページに各トーナメント詳細の更新を表示する方法です。
'トーナメント'コントローラービューアクションでの私の検索データは次のとおりです。
$updates = $this->Tournament->TournamentDetail->Update->find('all', array( 'tournament_details.tournament_id'=> $this->data['Tournament']['id']));
ビューでは、私はこのコードを持っています。
<?php foreach ($tournament['Update'] as $update): ?>
<h3>Updates</h3>
<h1><?php echo $update ['title']; ?></h1>
<p><?php echo $update ['body']; ?></p>
<hr/>
<?php endforeach; ?>
これは、私が他の関連する子レコードに問題なく使用しているのと同じ「foreach」コードです。debug()関数を使用して調査しましたが、何が欠けているのかわかりませんでした。
デバッグ関数からの$updates配列の出力は、次のようになります。
Array
(
[0] => Array
(
[Update] => Array
(
[id] => 1
[title] => first round matches start today
[date] => 2010-03-19
[body] => this tournament's first round matches start today.
[tournament_detail_id] => 4
[homeStatus] => no
)
これほど深いレコードを表示する特別な方法はありますか?
いつものように、よろしくお願いします。ポール
更新:2011年2月23日 いくつかのテストの後、私が抱えていると思われる問題は、正しい値を見つけて$updates変数に渡すことです。
要約すると、$updates変数に現在の「tournament_details_id」を保持させたいと思います。これにより、関連する更新レコードが「トーナメント」ビューに表示されます。
私はまだ初心者であり、明らかなことを見落としている可能性があります。
モデル情報は次のとおりです。
class Tournament extends AppModel {
var $name = 'Tournament';
var $hasMany = array(
'TournamentDetail' => array(
'className' => 'TournamentDetail',
'foreignKey' => 'tournament_id',)
class TournamentDetail extends AppModel {
var $name = 'TournamentDetail';
var $belongsTo = array(
'Tournament' => array(
'className' => 'Tournament',
'foreignKey' => 'tournament_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
class Update extends AppModel {
var $name = 'Update';
var $belongsTo = array(
'TournamentDetails' => array(
'className' => 'TournamentDetails',
'foreignKey' => 'tournament_detail_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
コントローラーデータ:
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( 'tournament_details_id' => $this->data['TournamentDetails']['id'] )));
$this->set(compact('tournament','updates', $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; ?>
トーナメントの詳細「id」を整数として追加することでこれをテストしました。正しい「update」レコードが表示されます。ただし、同じように検索操作を構成する際に問題があるようです。
いつものように私は助けに感謝します。
ありがとうポール