Я используюableable для извлечения связанных записей в действие view и получаю сообщение об ошибке при циклическом просмотре результатов.
Кроме того, я использую «медленное» поведение, поэтому у операции поиска есть условие для поиска по этой переменной.
Когда я отлаживаю переменную find в представлении, я вижу правильные записи. Но когда я пытаюсь перебрать их в представлении, я получаю «Notice (8): Undefined index: error». В идеале мне нравилось понимать, как устранить эту ошибку, поскольку она иногда возникает.
Настройка модели:
турниров имеют много турнирных деталей
турнирДетали имеют много обновлений
Записи, которые я пытаюсь отобразить:
турнир с> tournamentDetails-> Обновления
Контроллер турнира выглядит так:
$tournament = $this->Tournament->find('first', array(
'conditions' => array( 'slug' => $slug),
'contain' => array(
'TournamentDetail' => array(
'Update' => array('order' => 'Update.id DESC'),
))));
Действие просмотра турнира выглядит следующим образом:
<?php foreach ($tournament ['Update'] as $update): ?>
<h3>Update: <?php echo $update ['Update']['date']; ?></h3>
<h4><?php echo $update['Update']['title']; ?></h4>
<p><?php echo $update ['Update']['body']; ?></p>
<hr/>
<?php endforeach; ?>
Обновление данных в представлении при отладке выглядит следующим образом:
[Update] => Array
(
[0] => Array
(
[id] => 2
[title] => Indoor Challenge
[date] => 2010-03-19
[body] => Congratulations 2010 Champion
[tournament_detail_id] => 4
[homeStatus] => no
)
[1] => 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
)
Есть ли что-то действительно очевидное, что я пропускаю при просмотре "обновлений"?
Спасибо, Пол
Разрешение
Спасибо всем за вклад. Сделав несколько шагов назад, мне пришло в голову, что происходит с «неопределенным индексом» и комментариями о том, как выполнить цикл.
Проблема заключалась в том, что цикл foreach не был вложенным, он только зацикливался на первом уровне ассоциации. Цикл предисловия имеет дело с «турнирами», в которых есть много «турниров по деталям».
Цикл, необходимый для того, чтобы перейти на один уровень глубже к "tourDetails, которые имеют много" обновлений ".
Вот код, который разрешил это в представлении.
<?php foreach ($tournament['TournamentDetail'] as $tournamentDetail): ?>
<?php foreach ($tournamentDetail ['Update'] as $update): ?>
<h3>Update: <?php echo $update['date']; ?></h3>
<h4><?php echo $update['title']; ?></h4>
<p><?php echo $update['body']; ?></p>
<hr/>
<?php endforeach; ?>
<?php endforeach; ?>
Если другие хотят понять, как использовать сдерживаемое поведение с более чем одним уровнем ассоциации, просто помните, что вам может потребоваться иметь вложенные циклы foreach в представлении для отображения результатов, к которым вы стремитесь.
Ура, Пол