首页 > 解决方案 > 如何访问 BigQuery\Timestamp 的私有属性

问题描述

我正在使用 BigQuery,但在检索数据时遇到问题。我有一个 BigQuery\Timestamp 对象

object(Google\Cloud\BigQuery\Timestamp)#1377 (1) { ["value":"Google\Cloud\BigQuery\Timestamp":private]=> object(DateTime)#1375 (3) { ["date"]=> string(26) "2020-12-09 16:16:56.706000" ["timezone_type"]=> int(1) ["timezone"]=> string(6) "+00:00" } }

value属性是private所以我不能使用日期。我收到此错误消息:

Cannot access private property Google\Cloud\BigQuery\Timestamp::$value

如何获取date属性的字符串值?我需要对两个 bigQuery 数据集中的所有数据进行排序。日期是关键元素,我希望结果结构如下

{
    "data": {
        "2020-12-12 12:00:00": {
            "data1_from_datasetA": 1,
            "data2_from_datasetA": 2,
            "data1_from_datasetB": 3,
        },
        "2020-12-12 13:00:00": {
            "data1_from_datasetA": 6,
            "data2_from_datasetA": 5,
            "data1_from_datasetB": 8,
        },
        "2020-12-12 14:00:00": {
            "data1_from_datasetA": 12,
            "data2_from_datasetA": 2,
            "data1_from_datasetB": 6,
        },
    }
}

标签: phpgoogle-bigquery

解决方案


我建议要求rawResults不要将时间戳转换为对象,因为这会适得其反。

 $queryResults = $bigQuery->runQuery($jobConfig, array(
            'timeoutMs' => 55 * 10000,
            'returnRawResults' => true
        ));

这样,每个条目都作为一个简单的纯值返回。


推荐阅读