tp6 column无原生列导致数据为空

浏览:1133 发布日期:2020/04/26 分类:ThinkPHP6专区
接我上一帖:http://www.thinkphp.cn/topic/68083.html, 因为过去时间太长所以无法编辑,不好上传图片,因此再发一帖。

测试代码:public static function sold()
    {
        $d1 = date('Y-m-d', strtotime('-7 day'));
        $d2 = date('Y-m-d', strtotime('-1 day'));

        $map = db(self::TABLE)
//            ->whereBetweenTime('date', $d1, $d2)
            ->group('repo_good_id,date')
            ->column('sum(num) as sold', 'repo_good_id');

        return $map;
    }
运行后,得到的$map结果为空数组,但是实际上拿执行的sql语句去数据库里查是有一条数据的!

为什么这样的写法就得不到结果呢,断点跟踪下来,发现是类为column中无原生列导致。看2张图:

图片无法上传,尴尬啊。。。

上传附件,http 521错误,咱整!

算了,文字描述下。

关键代码在:vendor/topthink/think-orm/src/db/PDOConnection.php 第1160行,
$result = array_column($resultSet, $column, $key);

执行这句前,$resultSet里是有一行数据的,但此时,$column是"sum(num) as sold", 所以在执行array_column后,得到的$result为[]。

我想这里可能是作者觉得太烦才这样草草忽略的吧,因为$resultSet里每行数据的键是repo_good_id和sold,而并没有“sum(num) as sold”,所以就取不到数据了!这未免有点可惜,我那样的写法就无法得到预期的结果了!
最佳答案
评论( 相关
后面还有条评论,点击查看>>