Skip to content

Commit d18fa34

Browse files
committed
Merge pull request #56 from ChubV/master
Fix tests, QuerySubscriber
2 parents 159cc48 + d4ecf57 commit d18fa34

File tree

4 files changed

+49
-20
lines changed

4 files changed

+49
-20
lines changed

bin/vendors.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
array('Symfony/Component/EventDispatcher', 'http://github.com/symfony/EventDispatcher.git', 'v2.0.10'),
1515

1616
// doctrine 2.3.x
17-
array('doctrine-orm', 'http://github.com/doctrine/doctrine2.git', '6cd82d77f5'),
18-
array('doctrine-dbal', 'http://github.com/doctrine/dbal.git', 'c8835edf74'),
19-
array('doctrine-common', 'http://github.com/doctrine/common.git', 'fc26d10d97'),
17+
array('doctrine-orm', 'http://github.com/doctrine/doctrine2.git', '304acf0a1a'),
18+
array('doctrine-dbal', 'http://github.com/doctrine/dbal.git', 'fd45c6f6ba'),
19+
array('doctrine-common', 'http://github.com/doctrine/common.git', 'bb0aebbf23'),
2020
array('doctrine-mongodb', 'http://github.com/doctrine/mongodb.git', 'd7fdcff25b'),
2121
array('doctrine-mongodb-odm', 'http://github.com/doctrine/mongodb-odm.git', 'e8c0bfb975'),
2222

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
namespace Knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\Query;
3+
4+
use Doctrine\ORM\Internal\Hydration\AbstractHydrator;
5+
6+
7+
/**
8+
* As is hydrator to fetch count query result without resultSetMappings etc.
9+
*
10+
* @author Vladimir Chub <[email protected]>
11+
*/
12+
class AsIsHydrator extends AbstractHydrator
13+
{
14+
/**
15+
* Hydrates all rows from the current statement instance at once.
16+
*/
17+
protected function hydrateAllData()
18+
{
19+
return $this->_stmt->fetchAll(\PDO::FETCH_ASSOC);
20+
}
21+
}

src/Knp/Component/Pager/Event/Subscriber/Paginate/Doctrine/ORM/QuerySubscriber.php

+4-16
Original file line numberDiff line numberDiff line change
@@ -63,23 +63,11 @@ public function items(ItemsEvent $event)
6363
->setMaxResults(null)
6464
;
6565

66-
$conn = $countQuery->getEntityManager()->getConnection();
67-
$params = $countQuery->getParameters()->toArray();
66+
$countQuery->getEntityManager()->getConfiguration()->addCustomHydrationMode('asIs',
67+
'Knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\Query\AsIsHydrator');
68+
$countResult = $countQuery->getResult('asIs');
6869

69-
list($types, $params) = array_reduce($params, function ($res, Parameter $par) {
70-
$res[0][] = $par->getType();
71-
$res[1][] = $par->getValue();
72-
73-
return $res;
74-
}, array(array(), array()));
75-
76-
$countResult = $conn
77-
->executeQuery($countQuery->getSQL(),
78-
$params,
79-
$types)
80-
->fetchColumn();
81-
82-
$event->count = intval($countResult);
70+
$event->count = intval(current(current($countResult)));
8371
}
8472
// process items
8573
$result = null;

tests/Test/Tool/BaseTestCaseORM.php

+21-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Test\Tool;
44

55
use Doctrine\Common\Annotations\AnnotationReader;
6+
use Doctrine\ORM\Mapping\DefaultNamingStrategy;
7+
use Doctrine\ORM\Mapping\DefaultQuoteStrategy;
68
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
79
use Doctrine\ORM\EntityManager;
810
use Doctrine\Common\EventManager;
@@ -233,6 +235,24 @@ private function getMockAnnotatedConfig()
233235
->will($this->returnValue('Doctrine\\ORM\\EntityRepository'))
234236
;
235237

238+
$config
239+
->expects($this->any())
240+
->method('getQuoteStrategy')
241+
->will($this->returnValue(new DefaultQuoteStrategy()))
242+
;
243+
244+
$config
245+
->expects($this->any())
246+
->method('getNamingStrategy')
247+
->will($this->returnValue(new DefaultNamingStrategy()))
248+
;
249+
250+
$config
251+
->expects($this->any())
252+
->method('getCustomHydrationMode')
253+
->will($this->returnValue('Knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\Query\AsIsHydrator'))
254+
;
255+
236256
return $config;
237257
}
238-
}
258+
}

0 commit comments

Comments
 (0)