2011-10-15 136 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')) 

這樣你就可以自己構造它。