加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何使用HABTM关系查询CakePHP中的数据?

发布时间:2020-12-13 18:15:38 所属栏目:PHP教程 来源:网络整理
导读:我正在开发Cake PHP 1.2应用程序.我有一个模型“用户”通过连接表定义了与其他表的几个HABTM关系. 我现在的任务是根据存储在其中一个HABTM表中的数据查找用户信息.不幸的是,当查询执行时,我的条件被拒绝,并显示有关丢失表的错误.在检查时,似乎CakePHP不包括s
我正在开发Cake PHP 1.2应用程序.我有一个模型“用户”通过连接表定义了与其他表的几个HABTM关系.

我现在的任务是根据存储在其中一个HABTM表中的数据查找用户信息.不幸的是,当查询执行时,我的条件被拒绝,并显示有关丢失表的错误.在检查时,似乎CakePHP不包括select语句中的任何HABTM表.

我的用户HABTM关系如下:

var $hasAndBelongsToMany = array(
    'Course' => array(
        'className'             => 'Course','joinTable'              => 'course_members','foreignKey'             => 'user_id','associationForeignKey'  => 'course_id','conditions'             => '','order'                  => '','limit'                  => '','uniq'                   => false,'finderQuery'            => '','deleteQuery'            => '','insertQuery'            => ''
    ),'School' => array(
        'className'             => 'School','joinTable'              => 'school_members','associationForeignKey'  => 'school_id','Team' => array(
        'className'             => 'Team','joinTable'              => 'team_members','associationForeignKey'  => 'team_id','insertQuery'            => ''
    )
);

错误是:

SQL Error: 1054: Unknown column
‘School.name’ in ‘where clause’

最后,它正在尝试执行的查询

SELECT 
 `User`.`id`,`User`.`username`,`User`.`password`,`User`.`firstName`,`User`.`lastName`,`User`.`email

`,`User`.`phone`,`User`.`streetAddress`,`User`.`city`,`User`.`province`,`User`.`country`,`User

`.`postal`,`User`.`userlevel`,`User`.`modified`,`User`.`created`,`User`.`deleted`,`User`.`deleted_date

` FROM `users` AS `User`   WHERE `User`.`id` = 6 AND `School`.`name` LIKE '%Test%'    LIMIT 1
将调试级别调高至2并查看SQL输出.找到您的代码生成的查询,您会发现有几个. CakePHP中的ORM层不会在第一个查询中连接HABTM相关表.它从第一个选择中获取结果,然后分别获取每个项目的HABTM数据.由于连接表不在第一个查询中,因此您的条件(用于连接表)会导致您看到的错误.

烹饪书有一个HABTM associations部分,根据HABTM表中的条件提取数据,以满足您的要求.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读