查询的分页忽略CakePHP 3.x中的LIMIT子句

时间:2016-01-14 10:02:49

标签: cakephp orm pagination cakephp-3.0

我正在尝试创建一个只返回2个结果的查询,并按照文档说明我运行查询,但默认情况下limit仍设置为20

以下是查询的构建方式:

$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

非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:2)

在对Query对象进行分页时,CakePHP将忽略limit()子句并使用$paginate配置数组中定义的值。

这是在检查the source code之后可以得出的结论。

尝试将以下内容添加到控制器中:

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