如何获取与CakePHP的查找操作的深层关联?

Mar*_*ean 1 cakephp cakephp-2.0 cakephp-model

我建立一个网站,有三种型号:Store,StoreReview,和User.该网站列出商店,用户可以查看商店.因此,我的Store模型可以有很多StoreReview行,每StoreReview行属于User一行.

我的问题是:在获取所有Store行时,如何获取相关UserStoreReview行?目前我正在使用:

<?php
class StoresController extends AppController {

    public function view($slug) {
        $stores = $this->Store->find('all');
    }
}
Run Code Online (Sandbox Code Playgroud)

但这只返回'StoreReview'行.因为这User行是另一个更深的层次,我不确定如何获取它; 我已经检查过CakePHP的文档和Googled,但是CakePHP最近重新开始了他们的文档站点,我的Google搜索网站上的示例都没有用.

先感谢您.

Pau*_*ues 7

有两种方法.您可以增加recursive属性:

$stores = $this->Store->find('all', array('recursive' => 2));
Run Code Online (Sandbox Code Playgroud)

或使用Containable行为(我更喜欢这个,因为你可以超过2个级别):

$this->Store->Behaviors->attach('Containable');
$this->Store->contain(array('StoreReview' => array('User')));
$stores = $this->Store->find('all');
$this->Store->Behaviors->detach('Containable');
Run Code Online (Sandbox Code Playgroud)

更多信息: