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

前端之家收集整理的这篇文章主要介绍了如何使用HABTM关系查询CakePHP中的数据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发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表中的条件提取数据,以满足您的要求.

原文链接:https://www.f2er.com/php/135149.html

猜你在找的PHP相关文章