2019-04-11 14:00:33 1624次浏览 4条回答 0 悬赏 40 金钱

首先我先说明一下情况,这个是按年份查询的数据关键字keyword就是年份,这是接口代码!
1.png

因为上边是按总分倒叙排的,当我搜索2017年的时候结果是这样的(最后一栏就是总分)
2.png
没有任何问题,从第一页到最后一页都是正常的
但是当我输入2018年的时候,奇怪的事情发生了!(ps:我先输入2018结果也一样所以是接口本身的查询问题)结果是样的:
这是第一页的数据

3.png

这是第九页的数据

4.png

我为什么要放第九页的数据呢,因为从第8页开始排序好像恢复了正常,中间穿插的有的不正常,但是重点来了

2018年前几页的数据我看了一下结构查出来的是2017年的数据,而它本身2018年的数据就是按正常的排序来的,这样说可能很难理解,就拿上面第三张图来说 排第一的是2.2分 这个2.2是2017年对应的数据,这个部分对应的2018年的总分是99.8分按2018年排的话正好就是第一名,如果还没理解的话那请看第四张图,这里边有一行特殊数据是-109.8分,这是这个部门对应的2017年的数据,但是他2018年的总分也是94.8分,正好排名在那个位置(ps:每个部门都对应有2017年和2018年的数据)

现在问题就是查询的结构紊乱了,但是我却不知道紊乱的原因,光查2018年就不正常,但是查2017年是没问题的,所以头有点大,望各位给说道说道!谢谢

  • 回答于 2019-04-18 17:38 举报

    这关联...

    简单看了下,问题应该出在 ->where ... ->andFilterWhere ... 的混用上面

    建议尝试把 andFilterWhere 修改为 andWhere
    或者把查询条件组装一下, 只用一个 where(['and',...])

    如果已解决,不妨也分享下解决方法 :)

  • 回答于 2019-04-11 16:40 举报

    return $dataProvider; 上面

    $commandQuery = clone $query;  
    echo $commandQuery->createCommand()->getRawSql();  
    exit; 
    

    就行了

    3 条回复
    回复于 2019-04-11 16:47 回复

    $commandQuery = clone $query 这一句我那里边你觉得$query是写它本身呢还是写$dataProvider

    回复于 2019-04-11 16:51 回复

    都试试吧,按理说应该是$dataProvider

    回复于 2019-04-11 17:28 回复

    都不行 铁子 我在看看数据库吧

  • 回答于 2019-04-11 16:39 举报
    $commandQuery = clone $query;
    echo $commandQuery->createCommand()->getRawSql();
    exit;
    
  • 回答于 2019-04-11 16:12 举报

    试试吧sql拼成 比如查2018就 2018-01-01 到2018-12-31 之间这样查可以试试, 另外我们这样看按理说是看不出是什么原因导致絮乱的,你可以吧查询的sql语句打印出来 直接 去数据库查试试也行,反正就是多排查排查吧

    1 条回复
    回复于 2019-04-11 16:36 回复

    嗯嗯 试了 结果一样 我估计是数据库的问题,我想看下sql语句 但是放到 ActiveDataProvider 里边的查询我不知道该如何打印?

您需要登录后才可以回答。登录 | 立即注册
mouthliu
职场新人

mouthliu

注册时间:2018-09-07
最后登录:2019-04-13
在线时长:5小时22分
  • 粉丝0
  • 金钱25
  • 威望0
  • 积分75

热门问题