Skip to content

Commit a25a8f6

Browse files
committed
Generating partial query only once
1 parent f51198b commit a25a8f6

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/InnerResultIterator.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Psr\Log\LoggerInterface;
1010
use Psr\Log\NullLogger;
1111
use TheCodingMachine\TDBM\QueryFactory\SmartEagerLoad\PartialQueryFactory;
12+
use TheCodingMachine\TDBM\QueryFactory\SmartEagerLoad\Query\PartialQuery;
1213
use TheCodingMachine\TDBM\QueryFactory\SmartEagerLoad\StorageNode;
1314
use TheCodingMachine\TDBM\Utils\DbalUtils;
1415

@@ -68,11 +69,13 @@ class InnerResultIterator implements \Iterator, \Countable, \ArrayAccess
6869
*/
6970
private $logger;
7071
/**
71-
* @var PartialQueryFactory|null
72+
* @var PartialQuery|null
7273
*/
73-
private $partialQueryFactory;
74-
75-
protected $count = null;
74+
private $partialQuery;
75+
/**
76+
* @var int|null
77+
*/
78+
protected $count;
7679

7780
private function __construct()
7881
{
@@ -96,7 +99,11 @@ public static function createInnerResultIterator(string $magicSql, array $parame
9699
$iterator->magicQuery = $magicQuery;
97100
$iterator->databasePlatform = $iterator->tdbmService->getConnection()->getDatabasePlatform();
98101
$iterator->logger = $logger;
99-
$iterator->partialQueryFactory = $partialQueryFactory;
102+
$partialQuery = null;
103+
if ($iterator instanceof StorageNode && $partialQueryFactory !== null) {
104+
$iterator->partialQuery = $partialQueryFactory->getPartialQuery($iterator, $magicQuery, $parameters);
105+
}
106+
100107
return $iterator;
101108
}
102109

@@ -208,11 +215,6 @@ public function next()
208215
$beansData[$columnDescriptor['tableGroup']][$columnDescriptor['table']][$columnDescriptor['column']] = $value;
209216
}
210217

211-
$partialQuery = null;
212-
if ($this instanceof StorageNode && $this->partialQueryFactory !== null) {
213-
$partialQuery = $this->partialQueryFactory->getPartialQuery($this, $this->magicQuery, $this->parameters);
214-
}
215-
216218
$reflectionClassCache = [];
217219
$firstBean = true;
218220
foreach ($beansData as $beanData) {
@@ -250,7 +252,7 @@ public function next()
250252
// Let's bypass the constructor when creating the bean!
251253
/** @var AbstractTDBMObject $bean */
252254
$bean = $reflectionClassCache[$actualClassName]->newInstanceWithoutConstructor();
253-
$bean->_constructFromData($beanData, $this->tdbmService, $partialQuery);
255+
$bean->_constructFromData($beanData, $this->tdbmService, $this->partialQuery);
254256
}
255257

256258
// The first bean is the one containing the main table.

0 commit comments

Comments
 (0)