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
相关产品推荐
相关产品推荐

