我想将“sector”表加入到我的分页结果中。以下是发生的事情:
我设置了paginate变量,以便它将加入Sector:
$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');
分页器生成的查询已损坏,因为它在公司之前加入了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')
我对作业模型进行了分页,它与公司模型有关,但与扇区模型无关。这就是为什么我需要加入该部门的分页。
我该如何解决这个问题?
答案 0 :(得分:0)
'Joins'条件不应该被指定为关联数组,而应该被指定为字符串,否则CakePHP将把'Sector.id'作为文字字符串处理,而不是作为对另一个模型的引用/字段。
所以,替换这个:
'conditions' => array('Company.sector_id' => 'Sector.id')
有了这个
'conditions' => array('Company.sector_id = Sector.id')
你的查询应该没问题
答案 1 :(得分:0)
我的解决方案是将Job模型加入Sector。