我的目标是在视图中显示相关子模型的记录(一旦删除)。我知道将递归值设置为“1”会返回当前模型,其所有者以及相关模型。
我不知道该怎么做才在视图中显示。
我的方法是在控制器中创建一个可变量,保存相关模型ID的值,但这不起作用。
*我还应该提一下,我在锦标赛中使用了一个可缓慢的行为,所以它不是$ id,而是$ slug。
以下是模型视图控制器详细信息:
模型
锦标赛 - 有很多锦标赛详情
tournamentDetails - 有很多更新
更新 - 属于tournamentDetails
锦标赛控制员 action = view
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; ?>
当我调试$ updates时,这就是我所看到的:
Array
(
)
我不知道我在这里做错了什么。
使用以下方法构造查找条件不正确:
('conditions'=>array('update.tournament_detail_id' => $this->data['tournament_details'] ['id'] )
感谢您的帮助。 保罗
答案 0 :(得分:2)
您可以使用Containable行为详细指定要从关联模型获得的字段,关联模型与关联模型等等。然后,您将在数组$tournament
中找到所有数据,如链接中的示例所示。
编辑(作为对OP评论的回应)。我认为问题可能是使用魔术findBy
方法。您需要使用标准find
替换它,就像在此示例中一样
$tournament = $this->Tournament->find('first', array(
'conditions' => array(
'slug' => $slug
),
'contain' => array(//Put here the settings for Containable
)
));