Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5fe0f94

Browse files
minor #36992 Handle fetch mode deprecation of DBAL 2.11 (derrabus)
This PR was merged into the 4.4 branch. Discussion ---------- Handle fetch mode deprecation of DBAL 2.11 | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | N/A | License | MIT | Doc PR | N/A Continuation of #36987 on the 4.4 branch. Commits ------- 1385213 Handle fetch mode deprecation of DBAL 2.11.
2 parents dfe8c81 + 1385213 commit 5fe0f94

File tree

6 files changed

+31
-20
lines changed

6 files changed

+31
-20
lines changed

src/Symfony/Bridge/Doctrine/Tests/Security/RememberMe/DoctrineTokenProviderTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*/
1414
class DoctrineTokenProviderTest extends TestCase
1515
{
16-
public static function setUpBeforeClass()
16+
public static function setUpBeforeClass(): void
1717
{
1818
if (\PHP_VERSION_ID >= 80000) {
1919
self::markTestSkipped('Doctrine DBAL 2.x is incompatible with PHP 8.');

src/Symfony/Component/Cache/Traits/PdoTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ protected function doHave($id)
232232
$stmt->bindValue(':time', time(), \PDO::PARAM_INT);
233233
$stmt->execute();
234234

235-
return (bool) $stmt->fetchColumn();
235+
return (bool) (method_exists($stmt, 'fetchOne') ? $stmt->fetchOne() : $stmt->fetchColumn());
236236
}
237237

238238
/**

src/Symfony/Component/Lock/Store/PdoStore.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ public function exists(Key $key)
203203
$stmt->bindValue(':token', $this->getUniqueToken($key));
204204
$stmt->execute();
205205

206-
return (bool) $stmt->fetchColumn();
206+
return (bool) (method_exists($stmt, 'fetchOne') ? $stmt->fetchOne() : $stmt->fetchColumn());
207207
}
208208

209209
/**

src/Symfony/Component/Messenger/Tests/Transport/Doctrine/ConnectionTest.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
namespace Symfony\Component\Messenger\Tests\Transport\Doctrine;
1313

1414
use Doctrine\DBAL\DBALException;
15-
use Doctrine\DBAL\Driver\Statement;
15+
use Doctrine\DBAL\Driver\ResultStatement;
16+
use Doctrine\DBAL\ForwardCompatibility\Driver\ResultStatement as ForwardCompatibleResultStatement;
1617
use Doctrine\DBAL\Platforms\AbstractPlatform;
1718
use Doctrine\DBAL\Query\QueryBuilder;
1819
use Doctrine\DBAL\Schema\AbstractSchemaManager;
@@ -142,11 +143,16 @@ private function getQueryBuilderMock()
142143
return $queryBuilder;
143144
}
144145

145-
private function getStatementMock($expectedResult): Statement
146+
private function getStatementMock($expectedResult): ResultStatement
146147
{
147-
$stmt = $this->createMock(Statement::class);
148+
$mockedInterface = interface_exists(ForwardCompatibleResultStatement::class)
149+
? ForwardCompatibleResultStatement::class
150+
: ResultStatement::class;
151+
152+
$stmt = $this->createMock($mockedInterface);
153+
148154
$stmt->expects($this->once())
149-
->method('fetch')
155+
->method(method_exists($mockedInterface, 'fetchAssociative') ? 'fetchAssociative' : 'fetch')
150156
->willReturn($expectedResult);
151157

152158
return $stmt;
@@ -306,9 +312,12 @@ public function testFindAll()
306312
'headers' => json_encode(['type' => DummyMessage::class]),
307313
];
308314

309-
$stmt = $this->createMock(Statement::class);
315+
$mockedInterface = interface_exists(ForwardCompatibleResultStatement::class)
316+
? ForwardCompatibleResultStatement::class
317+
: ResultStatement::class;
318+
$stmt = $this->createMock($mockedInterface);
310319
$stmt->expects($this->once())
311-
->method('fetchAll')
320+
->method(method_exists($mockedInterface, 'fetchAllAssociative') ? 'fetchAllAssociative' : 'fetchAll')
312321
->willReturn([$message1, $message2]);
313322

314323
$driverConnection

src/Symfony/Component/Messenger/Tests/Transport/Doctrine/DoctrineIntegrationTest.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,14 @@ public function testSendWithDelay()
6464
{
6565
$this->connection->send('{"message": "Hi i am delayed"}', ['type' => DummyMessage::class], 600000);
6666

67-
$available_at = $this->driverConnection->createQueryBuilder()
67+
$stmt = $this->driverConnection->createQueryBuilder()
6868
->select('m.available_at')
6969
->from('messenger_messages', 'm')
7070
->where('m.body = :body')
7171
->setParameter(':body', '{"message": "Hi i am delayed"}')
72-
->execute()
73-
->fetchColumn();
72+
->execute();
7473

75-
$available_at = new \DateTime($available_at);
74+
$available_at = new \DateTime(method_exists($stmt, 'fetchOne') ? $stmt->fetchOne() : $stmt->fetchColumn());
7675

7776
$now = new \DateTime();
7877
$now->modify('+60 seconds');

src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,12 @@ public function get(): ?array
159159
->setMaxResults(1);
160160

161161
// use SELECT ... FOR UPDATE to lock table
162-
$doctrineEnvelope = $this->executeQuery(
162+
$stmt = $this->executeQuery(
163163
$query->getSQL().' '.$this->driverConnection->getDatabasePlatform()->getWriteLockSQL(),
164164
$query->getParameters(),
165165
$query->getParameterTypes()
166-
)->fetch();
166+
);
167+
$doctrineEnvelope = method_exists($stmt, 'fetchAssociative') ? $stmt->fetchAssociative() : $stmt->fetch();
167168

168169
if (false === $doctrineEnvelope) {
169170
$this->driverConnection->commit();
@@ -249,7 +250,9 @@ public function getMessageCount(): int
249250
->select('COUNT(m.id) as message_count')
250251
->setMaxResults(1);
251252

252-
return $this->executeQuery($queryBuilder->getSQL(), $queryBuilder->getParameters(), $queryBuilder->getParameterTypes())->fetchColumn();
253+
$stmt = $this->executeQuery($queryBuilder->getSQL(), $queryBuilder->getParameters(), $queryBuilder->getParameterTypes());
254+
255+
return method_exists($stmt, 'fetchOne') ? $stmt->fetchOne() : $stmt->fetchColumn();
253256
}
254257

255258
public function findAll(int $limit = null): array
@@ -259,7 +262,8 @@ public function findAll(int $limit = null): array
259262
$queryBuilder->setMaxResults($limit);
260263
}
261264

262-
$data = $this->executeQuery($queryBuilder->getSQL(), $queryBuilder->getParameters(), $queryBuilder->getParameterTypes())->fetchAll();
265+
$stmt = $this->executeQuery($queryBuilder->getSQL(), $queryBuilder->getParameters(), $queryBuilder->getParameterTypes());
266+
$data = method_exists($stmt, 'fetchAllAssociative') ? $stmt->fetchAllAssociative() : $stmt->fetchAll();
263267

264268
return array_map(function ($doctrineEnvelope) {
265269
return $this->decodeEnvelopeHeaders($doctrineEnvelope);
@@ -271,9 +275,8 @@ public function find($id): ?array
271275
$queryBuilder = $this->createQueryBuilder()
272276
->where('m.id = ?');
273277

274-
$data = $this->executeQuery($queryBuilder->getSQL(), [
275-
$id,
276-
])->fetch();
278+
$stmt = $this->executeQuery($queryBuilder->getSQL(), [$id]);
279+
$data = method_exists($stmt, 'fetchAssociative') ? $stmt->fetchAssociative() : $stmt->fetch();
277280

278281
return false === $data ? null : $this->decodeEnvelopeHeaders($data);
279282
}

0 commit comments

Comments
 (0)