2011-10-15 70 views
0

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

这是结果的例子:

$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); 

现在我想使他们与分页程序兼容来获取结果。 我试过这样做,但总是有很多错误。

+0

什么paginator?你得到了什么错误? –

+0

主要的问题是,当我点击一个列名来排序结果 - 一切消失。 –

+0

如果您不使用paginator组件,请勿使用paginator助手。你需要将这些列自行排序。 –

回答

0

CakePHP的优势在于它可以为您完成所有工作。你有适当的relationships设置?这样你就不需要编写自己的查询。过去两年,我一直在与Cake一起工作,做复杂的事情,从来没有写我自己的查询。

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

如果你不能,也许有一丝...

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

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

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