- 我在我的应用中实现了搜索功能。它返回一个连接表,所以基本上查询结果的数据来自不同的表。
这是结果的一个例子:
$selectSQL = 'SELECT
agencies.agency, agencies.website_url, agencies.status, agencies.size, agencies.profession, agencies.sector, agencies.id, OfficeData.id, ContactData.name, ContactData.surname, ContactData.job_title, ContactData.email,
ContactData.direct_line, OfficeCountryData.country, OfficeData.switchboard, agencies.industry
FROM agencies';
$sql2=' LEFT JOIN offices AS OfficeData ON (agencies.id = OfficeData.agency_id AND OfficeData.hq = "1")
LEFT JOIN countries AS OfficeCountryData ON OfficeData.hq = OfficeCountryData.id
LEFT JOIN contacts AS ContactData ON agencies.id = ContactData.agency_id
';
$whereSQL = ' WHERE 1 = 1 AND ProfessionData.profession_id = 3'
$groupBySQL = 'GROUP BY agencies.id ORDER BY agencies.id ASC';
$resultAgencies = $this->Agency->query($selectSQL . $sql2 . $whereSQL . $groupBySQL);
现在我想获取结果,以便它们与paginator兼容。 我试过这样做,但总是有很多错误。
答案 0 :(得分:0)
CakePHP的优势在于它可以为您完成所有工作。你有正确的relationships设置吗?这样你就不需要编写自己的查询。我在过去的两年里一直在使用Cake,做了很复杂的事情而且从来没有写过我自己的查询。
您的查询似乎并不复杂,所以我怀疑它们无法在CakePHP中完成。它有许多好处,例如分页和增加安全性......
如果你不能,也许是暗示......
CakePHP为您提供关联数组的结果,因此您应该将结果转换为该格式:
array('Model' => array('field1', 'field2'))
这样你就可以自己构建它。