shanliangxiaomi 2017-06-28 20:23:20 2786次浏览 3条回复 1 1 0

比如foreach(TableName::find()->offset(10)->limit(10)->all() as $liner)这样分页查询数据库中的表没有问题,每条记录都可以查到,但是如果在offset前面加上where条件或者orderBy就会对查询结果造成影响,这是为什么?

觉得很赞
  • 回复于 2017-06-29 10:16 举报

    因为只根据前面的查询结果进行分页的, 这属于sql语句的知识,

    1 条回复
    回复于 2017-06-29 11:24 回复

    我说的不太清楚,具体是这样的,我有一个表,表中有一个字段全部为0,我在做分页的时候是这样的
    foreach(TableName::find()->where("coloum != 1")->offset($num * 10)->limit(10)->all() as $liner),$num是从0到总页数减1逐渐加1的变量,这样按说应该每条记录都能扫到,因为每一条记录都不等于1,但是实际情况是有的记录扫不到,而且是只要扫不到就是连续10条,这是为什么?

  • 回复于 2017-06-30 02:46 举报

    你不要把TableName::find()->where("coloum != 1")->offset($num * 10)->limit(10)->all() 这个语句放在foreach里,单独出来

  • 回复于 2017-07-04 16:14 举报

    TableName::find()->where("coloum != 1")->offset($num * 10)->limit(10)->OrderBy("index_id")->all() 试一下,我认为可有能select出来的数据结果发生变化了。

    我问下这个是分页之后页面浏览时候是不是有插入或者删除操作?比如插入2条,插入之后count(*)总条数变化了,翻页不会更新,有可能导致有一部分数据拿不到,关掉页面重新打开应该是可以扫到的?不知道是不是这个情况

您需要登录后才可以回复。登录 | 立即注册