CakePHP - 从深层关系中获取数据?

时间:2012-02-25 22:12:00

标签: php cakephp cakephp-appmodel

我的关系如下:

User hasMany Item, Offer, Watcher

Item BelongsTo User
Item hasMany Offer, Watcher

Offer/Watcher BelongTo Item & User

当我尝试使用此功能获取用户项目时:

    $this->loadModel( 'User', $this->Auth->user( 'id' ) );
    $this->set( 'user', $this->User->read() );

它获取用户记录,他们正在观看的项目以及他们提供的项目,这很好。

然而,对于他们销售的用户物品,它不会正确获得观察者/优惠。

如果我使用:$this->User->recursive = 2;那么它只获取user_id,但根本不会将其与用户配置文件相关联!

示例:

http://pastebin.com/9A8k7rDs

我可以通过单独包含模型并以这种方式获取数据来获取此信息,但这是一种黑客攻击。

我想知道是否有人知道更好的方法?!或者即使我的关系是对的:z?

2 个答案:

答案 0 :(得分:0)

您是否在所有模型中设置了关系?这意味着您不仅要在User模型中拥有关系,还要在Item,Watcher和Offer模型中拥有关系。

答案 1 :(得分:0)

我明白了!

我将$this->User->Item->find( ... )用于$this->Item->recursive = 2;

它返回了我想要的数据并且有点额外的,所以我用可包含的行为来控制它。

谢谢!