Cakephp通过查找选项连接表不起作用
我正在尝试将一个Users表加入到我的current hasMany-Through表中,该表具有兴趣和用户模型id 以下是带有选项的查找查询: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,
$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')
之间的区别,文档中的内容与后者类似。