Cakephp通过查找选项连接表不起作用

Cakephp通过查找选项连接表不起作用,php,mysql,cakephp,Php,Mysql,Cakephp,我正在尝试将一个Users表加入到我的current hasMany-Through表中,该表具有兴趣和用户模型id 以下是带有选项的查找查询: $params = array( 'fields' => array('*', 'COUNT(DISTINCT(InterestsUser.interest_id)) as interest_count'), 'limit' => 15,

我正在尝试将一个Users表加入到我的current hasMany-Through表中,该表具有兴趣和用户模型id

以下是带有选项的查找查询:

$params = array(
                    'fields' => array('*', 'COUNT(DISTINCT(InterestsUser.interest_id)) as interest_count'),
                    'limit' => 15,
                    'recursive' => -1,
                    'offset' => $offset,
                    'conditions' => array('InterestsUser.interest_id' => $conditions),
                    'group' => array('InterestsUser.user_id'),
                    'order' => array('interest_count DESC', 'InterestsUser.user_id ASC', 'InterestsUser.interest_id ASC'),
                        'joins' => array(
                            array('table' => 'users',
                                'alias' => 'User',
                                'type' => 'LEFT',
                                'conditions' => array(
                                    'User.id' => 'InterestsUser.user_id',
                                )
                            )
                        )
                    );

            $results = $this->InterestsUser->find('all', $params);
这将返回InterestUser表fine,但不会为Users表返回任何值。它只返回字段名

有什么不对劲吗

更新: 好的,上面生成的SQL是我从Cake的数据源SQL日志中得到的:

SELECT *, COUNT(DISTINCT(InterestsUser.interest_id)) as interest_count 
FROM `interests_users` AS `InterestsUser` 
LEFT JOIN users AS `User` ON (`User`.`id` = 'InterestsUser.user_id')  
WHERE `InterestsUser`.`interest_id` IN (3, 2, 1)  
GROUP BY `InterestsUser`.`user_id`  
ORDER BY `interest_count` DESC, `InterestsUser`.`user_id` ASC, `InterestsUser`.`interest_id` ASC  
LIMIT 15
为什么用户的表值只为所有字段返回NULL

更新:

好的,我在下面试过了,但效果很好…我在这里错过了什么

SELECT * , COUNT( DISTINCT (
interests_users.interest_id
) ) AS interest_count
FROM interests_users
LEFT JOIN users ON ( users.id = interests_users.user_id ) 
WHERE interests_users.interest_id
IN ( 1, 2, 3 ) 
GROUP BY interests_users.user_id
ORDER BY interest_count DESC 
LIMIT 15

连接条件的数组语法应如下所示

array('User.id = InterestsUser.user_id')

数组('User.id'=>'interestUser.User\u id')相反
。有关更多信息,请参见。

连接条件的数组语法应如下所示

array('User.id = InterestsUser.user_id')

数组('User.id'=>'interestUser.User\u id')相反
。有关更多信息,请参阅。

好,我发现了问题。就是这个interestUser.user\u id字段!!!显然,我需要拿出'让这个工作!但为什么会这样?当它被Cake的数据源添加时,我如何去掉它?我真的不想使用自定义sql查询…您是否尝试过
conditions=>array('User.id=interestuser.User\u id')
?请查看上面的初始蛋糕选项查询。它已经在联接数组下具有该值!好的,我想这是MySQL的错误。为什么我们必须在联接表的外键或主键上取下“”才能使其工作?这真的很奇怪…这是
array('User.id'=>'interestuser.User\u id')
array('User.id=interestuser.User\u id')
之间的区别,文档与后者类似。好吧,我发现了问题。就是这个interestUser.user\u id字段!!!显然,我需要拿出'让这个工作!但为什么会这样?当它被Cake的数据源添加时,我如何去掉它?我真的不想使用自定义sql查询…您是否尝试过
conditions=>array('User.id=interestuser.User\u id')
?请查看上面的初始蛋糕选项查询。它已经在联接数组下具有该值!好的,我想这是MySQL的错误。为什么我们必须在联接表的外键或主键上取下“”才能使其工作?这真的很奇怪……这就是
array('User.id'=>'interestuser.User\u id')
array('User.id=interestuser.User\u id')
之间的区别,文档中的内容与后者类似。