在Tp5中使用mongodb 使用自定義ObjectId時報錯:Cannot use object of type MongoDB\\BSON\\ObjectID as arrayphp
查詢源碼發如今topthink/think-mongo/src/Builder.php中發現 它原來的parseData方法這樣寫的:mongodb
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; }
這裏作下更改就能夠了ui
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; }