我使用CakePHP 2.X版本CakePHP的傳遞自定義查詢從控制器到模型PAGINATE()
Im去運行SQL等:
SELECT field1, field2, field3, field3,
(IF(LOCATE('abc', field1), 4, 0) + IF(LOCATE('abc', field2), 3, 0) + IF(LOCATE('abc', field3), 2, 0)) AS score
FROM sometable
WHERE ((field1 LIKE '%abc%') OR (field2 LIKE '%abc%') OR (field3 LIKE '%abc%'))
ORDER BY score DESC
由代碼生成此SQL動態。所以這個sql需要傳遞給paginate()函數,以便通過cakephp來完成分頁。看起來cakephp分頁功能不夠靈活,無法處理複雜的sql。
要執行這個複雜的SQL,我如何重寫paginate()來分頁我的結果?
描述:
我嘗試做自定義查詢分頁。 Controller獲取關鍵字並生成SQL,我想將SQL字符串傳遞給public function paginate(Model $model, $conditions, $fields, $order, $limi ...)
函數,該函數在Model中被覆蓋以運行此自定義查詢。我怎樣才能將SQL字符串傳遞給分頁函數。
有什麼建議或提示嗎?
您需要提供一些代碼來爲您正在做的事情提供某種上下文。我會告訴你,鑑於這個問題,你可能無法做你想做的事情。你在用什麼自定義查詢?由於自定義查詢往往只有在CakePHP無法完成的情況下才需要,因此很可能分頁函數也不會。您可能需要爲自定義查詢編寫自己的分頁。 – 2012-01-12 03:13:52
@Scott Harwell謝謝你的回覆。我的問題是處理一些複雜的SQL,我想直接將SQL傳遞到paginate函數,而不是使用基本字段,條件參數。在我的情況下,我需要使用Model :: query()然後寫我自己的分頁?任何建議 – EeE 2012-01-12 03:44:03
我無法真正提出建議,因爲我沒有答案的上下文。如果您提供查詢,那麼人們可以爲解決方案提出建議,因爲他們瞭解您想要處理的數據。 – 2012-01-12 03:55:34