CakePHP中查询结果的分页

时间:2011-10-15 09:41:17

标签: mysql cakephp pagination

- 我在我的应用中实现了搜索功能。它返回一个连接表,所以基本上查询结果的数据来自不同的表。

这是结果的一个例子:

    $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兼容。 我试过这样做,但总是有很多错误。

1 个答案:

答案 0 :(得分:0)

CakePHP的优势在于它可以为您完成所有工作。你有正确的relationships设置吗?这样你就不需要编写自己的查询。我在过去的两年里一直在使用Cake,做了很复杂的事情而且从来没有写过我自己的查询。

您的查询似乎并不复杂,所以我怀疑它们无法在CakePHP中完成。它有许多好处,例如分页和增加安全性......

如果你不能,也许是暗示......

CakePHP为您提供关联数组的结果,因此您应该将结果转换为该格式:

array('Model' => array('field1', 'field2'))

这样你就可以自己构建它。