-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: 1.5.0
-
Component/s: None
-
None
-
Environment:Debian Buster
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Hello, first I apologize if this issue has already been addressed.
I am using Doctrine ODM on Debian Buster (so it's php-mongodb 1.5.3-2 ). And I had a problem when executing some findAndUpdate request :
$qb = $this->createQueryBuilder() ->findAndUpdate() ->returnNew() ->field('expires') ->lte(new DateTimeImmutable()) ->field('status') ->set(Status::LOCKED()) // other stuff ->getQuery() ->execute();
After that request, any other request to database ended up with this exception :
MongoDB\\Driver\\Exception\\InvalidArgumentException(code: 0): Class \u0001 does not exist
After digging I realize the property typeMap of MongoDB\Client class changes everytime the {{apply_type_map_to_document()}} function is called. To fix this problem I had to modify this function in order to pass a $typeMap array that is not used anywhere to \MongoDB\BSON\toPHP():
function apply_type_map_to_document($document, array $typeMap)
{
if ( ! is_array($document) && ! is_object($document)) {
throw InvalidArgumentException::invalidType('$document', $document, 'array or object');
}
$tm=[];
foreach($typeMap as $k=>$v){
$tm[$k]=$v;
}
return \MongoDB\BSON\toPHP(\MongoDB\BSON\fromPHP($document), $tm);
}
Thank you for your time.
PS : I already describe the problem in this Stack overflow question/answer
- related to
-
PHPC-2456 Dereference array zvals when reading "fieldPaths" type map option
-
- Closed
-