福州網站建設>網站新聞>thinkphp6專區

        tp6 column無原生列導致數據為空

        發布日期:2022-03-06瀏覽次數:987 來源:福州網站建設

        接我上一帖: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咨詢