福州网站建设>网站新闻>thinkphp6专区

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

发布日期:2022-03-06浏览次数:842 来源:福州网站建设

接我上一帖: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”,所以就取不到数据了!这未免有点可惜,我那样的写法就无法得到预期的结果了!

以上是由福州网站建设的小编为你分享了"tp6 column无原生列导致数据为空"文章,如果你在这方面有什么问题,随时联系我们

网友评论

  • wwxx 02月16日

    现在任然有问题,->column('sum(b.num)','a.id') 返回也是空;改为->column('sum(b.num as n)','a.id') 则可以。

  • thinkphp 2020年04月26日

    这个问题改进了 你可以用最新的开发版测试下

  • Rushing 2020年04月26日

    我是用composer update吗?

thinkphp6专区有关的文章
如果您有什么问题,欢迎咨询我们客服! 点击QQ咨询