【问题标题】:CakePHP 2.1 HABTM Not Getting Associated InfoCakePHP 2.1 HABTM 未获得相关信息
【发布时间】:2012-05-09 04:46:49
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: cakephp


    【解决方案1】:

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

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

    $this->User->find('first',array(
        'conditions'=>array('User.id'=>1),  
        'contain' => array('Item'=>array('Brand'))
    ));
    

    【讨论】:

    • 谢谢!这正是我所需要的
    • 不客气 :) 最好将最能解决您的问题的答案标记为“已回答”。它还奖励了我一些积分,当我达到 100 时,我的 GF 答应给我一只小狗 :)
    • 偶然发现了这个问题并看到了评论。顺便问一下,你有小狗吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-01
      • 2023-03-07
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多