Comment migrer du type array vers JSON avec Doctrine

JoliCode - JoliCodeBlog - 31/03
Doctrine a déprécié les types array et object en version 3. Il est temps de migrer vers un type plus interopérable, et moins sensibles au refactoring ! Vous l’aurez compris, il faut maintenant utiliser du JSON. Dans cet article, nous verrons comment migrer ces colonnes facilement

Doctrine a déprécié les types array et object en version 3. Il est temps de migrer vers un type plus interopérable, et moins sensibles au refactoring ! Vous l’aurez compris, il faut maintenant utiliser du JSON.

Dans cet article, nous verrons comment migrer ces colonnes facilement

Section intitulée etape-1-un-type-doctrine-hybrideÉtape 1 : Un type doctrine hybride

La première étape consiste à ajouter un support de compatibilité avec les deux types de colonnes. Nous allons ajouter un nouveau type Doctrine qui sait lire les deux types de colonnes. Il va d’abord tester de décoder la colonne au format JSON, et si ça échoue, il va essayer de décoder la colonne au format PHP.

<?php namespace App\Doctrine\Type; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ArrayType; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\JsonType; class MigrateJsonNullable extends JsonType { private ArrayType $arrayType; public function getSQLDeclaration(array $column, AbstractPlatform $platform) { $arrayType = $this->getArrayType(); $column['type'] = $arrayType; return $arrayType->getSQLDeclaration($column, $platform); } public function convertToPHPValue($value, AbstractPlatform $platform) { try { return pa...
[Courte citation de 8% de l'article original]
Loading...