Sql 使用联接表的Cakephp分页

Sql 使用联接表的Cakephp分页,sql,cakephp,pagination,Sql,Cakephp,Pagination,我想将“扇区”表加入到分页结果中。发生的情况如下: 我设置了paginate变量,以便它将加入扇区: $this->paginate = array( 'joins' => array( array( 'table' => 'sectors', 'alias' => 'Sector', 'type' => 'left', 'fore

我想将“扇区”表加入到分页结果中。发生的情况如下:

我设置了paginate变量,以便它将加入扇区:

$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');
分页器生成的查询已损坏,因为它在公司之前加入扇区。 以下是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') 
我对工作模式进行了分页,它与公司模式相关,但与行业模式无关。这就是为什么我需要加入分页行业


如何解决此问题?

CakePHP中的“连接”条件不应指定为关联数组,而应指定为字符串,否则CakePHP将“Sector.id”处理为文本字符串,而不是对另一个模型/字段的引用

因此,替换这个:

'conditions' => array('Company.sector_id' => 'Sector.id')
用这个

'conditions' => array('Company.sector_id = Sector.id')

您的查询应该是可以的

我的解决方案是将工作模型与部门联接。

尝试将
$conditions
放在外部数组的第一位。@DIDIERC如果没有“联接”中指定的“条件”,我将无法联接此表。让我重新表述一下:尝试将
的“条件”=>$conditions
放在
之前“在外部数组中加入”=>…
。请注意,这只是一个猜测,我不知道这是否是问题的根源,但尝试并不需要花费太多。@didierc这没有帮助,抱歉