在Tp5中使用mongodb 使用自定义ObjectId时报错:Cannot use object of type MongoDB\\BSON\\ObjectID as array
查询源码发现在topthink/think-mongo/src/Builder.php中发现 它原来的parseData方法这样写的:
protected function parseData($data, $options) { if (empty($data)) { return []; } $result = []; foreach ($data as $key => $val) { $item = $this->parseKey($key); if (isset($val[0]) && 'exp' == $val[0]) { $result[$item] = $val[1]; } elseif (is_null($val)) { $result[$item] = 'NULL'; } else { $result[$item] = $this->parseValue($val, $key); } } return $result; }
这里做下更改就可以了
protected function parseData($data, $options) { if (empty($data)) { return []; } $result = []; foreach ($data as $key => $val) { $item = $this->parseKey($key); if (is_object($val)) { $result[$item] = $val; }elseif (isset($val[0]) && 'exp' == $val[0]) { $result[$item] = $val[1]; } elseif (is_null($val)) { $result[$item] = 'NULL'; } else { $result[$item] = $this->parseValue($val, $key); } } return $result; }