Commit 866ba850 by Paul Klimov

yii\mongodb\file\Collection::ensureMongoId() fixed to suppress exception on invalid _id format.

parent 0019f130
...@@ -733,7 +733,13 @@ class Collection extends Object ...@@ -733,7 +733,13 @@ class Collection extends Object
$rawId = (string)$rawId; $rawId = (string)$rawId;
} }
} }
return new \MongoId($rawId); try {
$mongoId = new \MongoId($rawId);
} catch (\MongoException $e) {
// invalid id format
$mongoId = $rawId;
}
return $mongoId;
} }
/** /**
......
...@@ -419,4 +419,24 @@ class CollectionTest extends MongoDbTestCase ...@@ -419,4 +419,24 @@ class CollectionTest extends MongoDbTestCase
$this->assertNotEmpty($result); $this->assertNotEmpty($result);
$this->assertCount(2, $result); $this->assertCount(2, $result);
} }
public function testFindByNotObjectId()
{
$collection = $this->getConnection()->getCollection('customer');
$data = [
'name' => 'customer 1',
'address' => 'customer 1 address',
];
$id = $collection->insert($data);
$cursor = $collection->find(['_id' => (string)$id]);
$this->assertTrue($cursor instanceof \MongoCursor);
$row = $cursor->getNext();
$this->assertEquals($id, $row['_id']);
$cursor = $collection->find(['_id' => 'fake']);
$this->assertTrue($cursor instanceof \MongoCursor);
$this->assertEquals(0, $cursor->count());
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment