0

有个问题困扰了我一下午:

我正在制作一个吉他装备网站,所以我使用的是装备物品表、用户表和装备到用户的桥接表。也就是说,一个用户可以拥有多个项目并且项目可以属于多个用户。所以HABTM

一个项目属于一个品牌(例如 Fender - Stratocaster),所以我在项目模型中设置了belongsTo关系,并在品牌模型中设置了HasMany关系。当我检查项目控制器中的输出时,齿轮及其相关品牌的数据都应有尽有。

用户控制面板(和类似区域)基本上列出了用户拥有的所有项目。设置好用户和物品之间的HABTM关系后,我检查了控制器的输出。虽然物品的信息和桥牌信息都出现了,但物品的关联品牌信息却没有。结果本质上应该是一个项目列表,包括品牌信息,就好像它是“where user_id = x”。相反,它似乎只获取项目信息而没有获取任何关系。

我有什么遗漏或愚蠢的错误吗?谢谢。

4

2 回答 2

2

您是否考虑在对用户执行时设置/更改recursive属性find()
设置得越高recursive,就会发现越深的关联。

另一种方法可能是Containable对用户使用行为:

$this->User->find('first',array(
    'conditions'=>array('User.id'=>1),  
    'contain' => array('Item'=>array('Brand'))
));
于 2012-05-08T20:46:49.403 回答
1

设置递归级别,或者您可以使用 ContainableBehavior

于 2012-05-08T20:43:58.830 回答