CakePHP 没有来自相关模型的数据

Posted

技术标签:

【中文标题】CakePHP 没有来自相关模型的数据【英文标题】:CakePHP no data from related model 【发布时间】:2013-01-10 13:52:28 【问题描述】:

我有 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 -用户身份 - 其他领域...

用户 -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(..))

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

问候 米。

【问题讨论】:

检查***.com/questions/7846230/… $this->Account->recursive = 2;没有效果,与 $this->Account->find('first', array('conditions' => array('field' => $param), 'recursive' => 2)); 相同; 转到here 并搜索saveAll($data)。这就是保存记录及其相关记录的内容,这正是您想要的。祝你好运! 这正是我想要的?我要寻找,而不是保存。 :// 安装 Cakephp 的调试工具工具栏 (github.com/cakephp/debug_kit) 并查看为您的查询生成的 SQL。 【参考方案1】:

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

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

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

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

【讨论】:

以上是关于CakePHP 没有来自相关模型的数据的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP- 保存相关模型数据

cakephp 用户 ID 和相关模型

CakePHP 查找相关模型数据

CakePHP 2.0 添加相关数据失败,缺少数据库表

CakePHP 2.1 - 模型关联 - 保存和查找

在 MVC 中保存相关数据(cakephp)