You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用Back4App(Parse)无法获取createdAt值求助

解决PHP调用Back4App(Parse)无法获取createdAt字段的问题

以下是针对你问题的几种排查和解决方向:

1. 确认返回对象的类型

你的自定义Database::tableFetch方法可能返回的是数组而非ParseObject实例,导致无法调用getCreatedAt()方法。先通过以下代码确认类型:

for ($i = 0; $i < count($subscriptions); $i++) { 
     $object = $subscriptions[$i];
     var_dump(get_class($object)); // 查看是否为ParseObject
     var_dump($object); // 直接打印对象/数组结构,确认createdAt的位置
}

如果返回的是数组:

直接通过键名提取createdAt(注意Parse默认键名为createdAt,部分场景下可能是_created_at,以打印结果为准):

$createdAt = $object['createdAt'];
// 若返回的是DateTime对象,可格式化输出
if ($createdAt instanceof DateTime) {
    $formattedCreatedAt = $createdAt->format('Y-m-d H:i:s');
}

2. 检查查询是否限制了返回字段

如果tableFetch方法中使用了select()限制查询字段,可能未包含createdAt,导致无法获取。打开你的自定义Database类,找到tableFetch方法中的查询逻辑:

// 错误示例:仅指定了部分字段,未包含createdAt
$query = new ParseQuery("Subscribe");
$query->select(["your_column1", "your_column2"]);

修改为包含createdAt,或直接移除select()方法(默认返回所有字段):

// 方案1:添加createdAt到字段列表
$query->select(["your_column1", "your_column2", "createdAt"]);

// 方案2:移除select限制,返回所有字段
// $query->select(...); // 删掉这行

3. 验证ParseObject的getCreatedAt返回值

如果$object确实是ParseObject实例,getCreatedAt()返回的是DateTime对象而非字符串,直接打印可能看起来为空,需要格式化输出:

$createdAtObj = $object->getCreatedAt();
if ($createdAtObj instanceof DateTime) {
    $createdAtStr = $createdAtObj->format('Y-m-d H:i:s');
    echo $createdAtStr;
} else {
    // 确认是否查询到数据,或对象是否有效
    var_dump($object->getObjectId()); // 检查对象是否存在
}

内容的提问来源于stack exchange,提问作者Dorian JAMES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:35:28