Моя цель - отобразить записи для связанной дочерней модели (после удаления) в представлении. Моя проблема заключается в том, что я получаю сообщение об ошибке «Уведомление (8): неопределенный индекс:» при попытке вывести следующий запрос.
В турнирах много турнирных деталей, а в турнирных деталях много обновлений. Я пытаюсь отобразить все обновления для каждого турнира подробно, которые отображаются в представлении турниров.
Поэтому мой вопрос заключается в том, как правильно разрешить сообщение об ошибке и отобразить обновления для каждого турнира подробно на странице просмотра турниров.
Мои данные поиска в действии представления контроллера 'турниров':
$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
)
Есть ли специальный способ показывать записи так глубоко?
Как всегда, заранее спасибо.
Пол
Обновление: 23 февраля / 11
После некоторого тестирования у меня возникает проблема с поиском и передачей правильного значения в переменную $ updates;
Подводя итог, я хочу, чтобы переменная $ updates содержала текущее значение tour_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'. Однако, похоже, у меня проблемы с настройкой операции поиска, чтобы сделать то же самое.
Как всегда, я ценю помощь.
Спасибо
Пол