ThinkPHP 5.1 模型复用问题,不知道是不是 Bug

浏览:1253 发布日期:2018/09/02 分类:求助交流
假设我实例化一个模型对象合集出来$model = Users::where('id', '>', 100);如果这里先进行一次 count() 方法$model->count();会导致接下来所有的 select() 返回的结果永远是一条记录,也就是 COUNT(*) AS `tp_count` 的结果$model->select();原本就是希望不用多次实例化对象以及多次构建查询条件,很高兴 ThinkPHP 5.1 对该问题进行了改进(其实 ThinkPHP 5.0 改底层也是可以,但是并不太建议,主要是以后维护起来比较麻烦)
http://www.thinkphp.cn/topic/55490.html
不过这个也有解决的办法
通过 $model->getOptions(); 发现,options 在 count 后多了很多选项,所以在进行 select 方法之前(包括 ThinkPHP 分页),对其中两个选项进行删除$model->removeOption('limit');
$model->removeOption('field');
因为存在这两个选项,导致使用 ThinkPHP 分页或者 select 方法,都会再次查询 COUNT(*) AS `tp_count`,如果你只删除了 field 而不删除 limit,你会发现 select 永远仅有一条记录。
如果这是一个 bug,希望 ThinkPHP 尽快改进。
也祝福 ThinkPHP 越来越强壮。
最佳答案
评论( 相关
后面还有条评论,点击查看>>