From d1df723b36ffb68dbafb8deb085d7c9698dad23a Mon Sep 17 00:00:00 2001 From: soyuka Date: Wed, 6 Sep 2023 09:51:49 +0200 Subject: [PATCH] Aggregation uses CursorInterface instead of Cursor --- lib/Doctrine/ODM/MongoDB/Aggregation/Aggregation.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/Doctrine/ODM/MongoDB/Aggregation/Aggregation.php b/lib/Doctrine/ODM/MongoDB/Aggregation/Aggregation.php index b1d2a6955e..06a5fc90ce 100644 --- a/lib/Doctrine/ODM/MongoDB/Aggregation/Aggregation.php +++ b/lib/Doctrine/ODM/MongoDB/Aggregation/Aggregation.php @@ -10,9 +10,10 @@ use Doctrine\ODM\MongoDB\Iterator\Iterator; use Doctrine\ODM\MongoDB\Iterator\UnrewindableIterator; use Doctrine\ODM\MongoDB\Mapping\ClassMetadata; +use Iterator as SPLIterator; use IteratorAggregate; use MongoDB\Collection; -use MongoDB\Driver\Cursor; +use MongoDB\Driver\CursorInterface; use function array_merge; use function assert; @@ -35,12 +36,14 @@ public function getIterator(): Iterator $options = array_merge($this->options, ['cursor' => true]); $cursor = $this->collection->aggregate($this->pipeline, $options); - assert($cursor instanceof Cursor); + // This assertion can be dropped when requiring mongodb/mongodb 1.17.0 + assert($cursor instanceof CursorInterface); + assert($cursor instanceof SPLIterator); return $this->prepareIterator($cursor); } - private function prepareIterator(Cursor $cursor): Iterator + private function prepareIterator(CursorInterface&SPLIterator $cursor): Iterator { if ($this->classMetadata) { $cursor = new HydratingIterator($cursor, $this->dm->getUnitOfWork(), $this->classMetadata);