如何在CakePHP3中编写对应LIMIT 1,2的数据库查询?
解决CakePHP3中SQL LIMIT 1,2的查询转换问题
嘿,刚接触CakePHP3的话确实容易在查询构建器的limit用法上踩坑,我来帮你搞定这个问题~
首先得明确你原SQL语句的含义:SELECT * from quiz_questions LIMIT 1,2 在标准SQL里代表跳过前1条记录,获取接下来的2条数据(第一个参数是偏移量,第二个是获取条数)。而你之前尝试的两种写法都不对,因为CakePHP3的limit()方法只接受一个参数——要获取的记录数量,偏移量需要用单独的offset()方法来设置。
正确的写法应该是这样:
$this->QuizQuestions->find() ->offset(1) // 跳过第1条记录 ->limit(2); // 获取接下来的2条记录
为什么你的之前写法不行?
limit(1,2):CakePHP3的limit()不支持两个参数,这个写法会被解析成只获取1条记录,第二个参数会被忽略limit([1,2]):把数组传给limit()的话,框架会把它当成要获取的记录数量(数组会被处理成1,因为取了第一个元素),同样达不到你要的效果
如果需要验证生成的SQL语句,你可以在查询后加上->sql()来查看,比如:
$sql = $this->QuizQuestions->find() ->offset(1) ->limit(2) ->sql(); debug($sql); // 会输出对应的SQL语句,确认是否符合预期
内容的提问来源于stack exchange,提问作者Sanjeev rouhan
相关产品推荐
相关产品推荐

