多个模型/表上的CakePHP关系

多个模型/表上的CakePHP关系,cakephp,relationship,Cakephp,Relationship,我刚开始学习CakePHP。我做了博客教程,现在正在尝试为帖子添加类别。我创建了类别和子类别模型以及MySQL DB表,并将模型关联如下: Post->belongsTo->子类别->belongsTo->类别 Post->Subcategory工作正常,我可以通过以下方式解析视图中的子类别名称: php echo $post['SubCategory']['name']; 现在:如何在关系中更进一步,通过子类别在Post视图中获取帖子的类别名称?下面显然给出了类别ID,但不是名称: php

我刚开始学习CakePHP。我做了博客教程,现在正在尝试为帖子添加类别。我创建了类别和子类别模型以及MySQL DB表,并将模型关联如下:

Post->belongsTo->子类别->belongsTo->类别

Post->Subcategory工作正常,我可以通过以下方式解析视图中的子类别名称:

php echo $post['SubCategory']['name'];
现在:如何在关系中更进一步,通过子类别在Post视图中获取帖子的类别名称?下面显然给出了类别ID,但不是名称:

php echo $post['SubCategory']['category_id'];
非常感谢

查看模型的,然后进行第2步深度。如果定义正确,这将允许您使用该类别。请记住,它将需要获取大量数据,这将影响网站的整体性能。

您应该进行调查,这将帮助您只获取真正需要的结果。我经常建议的第一件事是更改$recursive=-1并使用Containable。这也将大大提高你的应用程序的性能,因为你将执行较少的调用数据,你并不实际使用

以您的例子:

$results = $this->Post->find('all', array(
  'contain' => array(
    'SubCategory' => array(
      'Category'
    )
  )
));

// in your view foreach loop
echo $post['SubCategory']['Category']['name'];

在我将您的代码添加到控制器并更改视图的回显行后,我得到了以下信息:注意8:未定义索引:类别[APP/view/Posts/index.ctp,第40行]您是否调试了$results以确保它加入了数据?如果我做得对,它似乎没有加入数据。视图中该行的调试输出为“null”,对于$results,我没有看到任何类别数据……这是我添加到PostsController:public函数索引中的内容{$this->set'posts',$this->Post->find'all';$this->Post->recursive=-1;$results=$this->Post->find'all',array'contain'=>array'SubCategory'=>array'Category';}视图中的行就是您建议的行。您是否已将可包含行为添加到$actsAs数组中?抱歉,现在我丢失了。$actsAs用于模型,对吗?我只对控制器和视图进行了更改。Post模型看起来像是此类Post扩展了AppModel{public$name='Post';public$belongsTo='SubCategory';我试图添加:public$actsAs=array'Containable';但没有任何运气。