【发布时间】:2013-02-08 15:21:15
【问题描述】:
我想将“部门”表加入我的分页结果。这是发生了什么:
我设置了分页变量,以便它加入扇区:
$this->paginate = array(
'joins' => array(
array(
'table' => 'sectors',
'alias' => 'Sector',
'type' => 'left',
'foreignKey' => false,
'conditions' => array('Company.sector_id = Sector.id'))),
'conditions' => $conditions);
然后去
$jobs = $this->paginate('Job');
分页器生成的查询已损坏,因为它在 Company 之前加入了 Sector。 这是sql输出的一部分:
SELECT COUNT(*) AS `count` FROM `jobs` AS `Job` left JOIN sectors AS `Sector` ON (`Company`.`sector_id` = 'Sector.id') LEFT JOIN `companies` AS `Company` ON (`Job`.`company_id` = `Company`.`id`)
它应该是:
SELECT COUNT(*) AS `count` FROM `jobs` AS `Job` LEFT JOIN `companies` AS `Company` ON (`Job`.`company_id` = `Company`.`id`) left JOIN sectors AS `Sector` ON (`Company`.`sector_id` = 'Sector.id')
我对 Job 模型进行了分页,它与 Company 模型相关,但与 Sector 模型无关。这就是为什么我需要通过分页加入 Sector。
我该如何解决这个问题?
【问题讨论】:
-
尝试将
$conditions放在外部数组的首位。 -
@DIDIERC 如果没有“joins”中指定的“conditions”,我将无法加入此表。
-
让我改写一下:尝试在外部数组中将
"conditions" => $conditions放在"joins" => ...之前。请注意,这只是一个猜测,我不知道这是否是您的问题的根源,但尝试的成本并不高。 -
@didierc 没用,抱歉
标签: sql cakephp pagination