1

我有 2 个相互关联的模型。

class AccountModel extends AppModel {

    public $name = 'Account';
    public $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey'   => 'user_id',

        ),
    );
}

class UserModel extends AppModel {

    public $name = 'User';
    public $hasMany = array(
        'Account' => array(
            'className' => 'Account',
            'foreignKey'   => 'user_id',

        ),
    );

}

表:帐户 -id -user_id -其他字段...

用户 -id -其他字段...

从一个模型请求数据只返回这个数据,但没有相关数据。我想请求具有 id 的模型用户并返回所有用户数据和相关的帐户数据。与使用一个参数请求 Account-model 相同,而不是 account_id 或 user_id,并返回所有 Account-data 和相关的 User-data。

$User = $this->Account->findByField($param);

只返回 array('Account' => array(...)) 和

$User = $this->User->findById($id);

只返回 array('User' => array(...)) 但没有请求返回 array('User' => array(...), 'Account' => array(..))

我将如何获取所有相关数据?

问候米。

4

1 回答 1

0

FindBy{fieldname}不允许使用递归选项(如 cakephp 文档中所定义findBy<fieldName>(string $value[, mixed $fields[, mixed $order]]);)。

为了通过关系获取递归数据,您应该使用 find 方法。

$userData = $this->User->find('first', array(
    'conditions' => array('id' => $userId),
    'recursive' => 1,
));

如果没有返回数据,请检查以下内容: - 是否传递了有效的 userId?- 两个表中是否有给定 userId 的数据?- 模型是否在您尝试运行 Find 查询的位置正确加载?

于 2013-01-15T18:02:08.323 回答