2016-01-14 87 views
1

我想創建一個只返回2個結果的查詢,並且按照文檔查詢運行,但limit仍然設置爲20默認。查詢的分頁忽略CakePHP 3.x中的LIMIT子句

下面是該查詢是如何構建的:

$upcomingMeetings = $this->Meetings->find('all') 
    ->where(['Meetings.user_id' => $this->Auth->User('user_id')]) 
    ->andWhere(["Meetings.date >= " => date('Y-m-d') ]) 
    ->order(['Meetings.date' => 'ASC']) 
    ->limit(2); 

結果被傳遞到視圖類似以下內容:

$this->set('upcomingMeetings', $this->paginate($upcomingMeetings)); 

這裏是正在對數據庫運行查詢:

SELECT 
    Meetings.id AS `Meetings__id`, 
    Meetings.date AS `Meetings__date`, 
    Meetings.user_id AS `Meetings__user_id`, 
FROM 
    meetings Meetings 
WHERE 
    (
    Meetings.group_id = 7 
    AND Meetings.date >= '2016-01-14' 
) 
ORDER BY 
    Meetings.date ASC 
LIMIT 
    20 OFFSET 0 

任何幫助或指導,非常感謝。

+0

沒有默認的限制,除非你正在使用例如分頁程序。如果是這種情況,請提及並提供有關分頁配置的相關代碼。 – ndm

+0

應該工作。你確定你正在執行你向我們展示的代碼嗎?你是否對其他地方的'$ visitsMeetings'進行了修改?你可以請你發佈執行的SQL查詢,你看到的,即在調試包? – arilia

+0

非常感謝您的快速回復。我剛剛用你要求的信息更新了問題。 – WpDoe

回答

2

當拼版一個Query對象,CakePHP會忽略limit()子句和使用$paginate配置數組中定義代替數值。

這是檢查the source code後可以得出結論。

嘗試添加下列到你的控制器:

public $paginate = [ 
    'limit' => 2, 
];