Doctrine2 solution de contournement pour la cartographie de MySql 'peu' de type de données
J'ai un peu de colonnes dans mon schéma de base de données qui ont peu de types de données et je rencontre des problèmes avec Doctrine2 la cartographier. Je reçois:
Inconnu de la base de données de type bit demandé, la Doctrine\DBAL\Plateformes\MySqlPlatform ne peut pas le soutenir.
Est-il contourner? Je pensais juste changer le type de données boolean et juste utiliser de vraies et de fausses déclarations, mais que signifierait la modification du schéma sur une grande échelle, je n'ai pas le temps pour.
- similaire réponse pour activer le protocole ENUM
- Peu en retard, mais la Doctrine recommande tinyint pour les types boolean avec mysql(docs.doctrine-project.org/projects/doctrine-dbal/en/latest/...). Vous pouvez convertir les colonnes de bit de type tinyint?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer votre propre type personnalisé pour la Doctrine.
Doctrine\DBAL\Types\Type
classe.convertToPHPValue()
etconvertToDatabaseValue()
méthodes.Enregistrer un nouveau type:
Lire plus sur la Doctrine de l' pages de documentation
DatabasePlatform
.Utilisation mapping_types dans la config.yml
bit
type est autre chose qu'une valeur de type boolean. Alors, attention vous risquez de perdre certaines informations.Dans le cas où vous utilisez
BIT
colonne de stocker uneboolean
, pour ce faire:Maintenant, chaque fois que vous mapper une propriété de bit de la colonne, doctrine 2 interprétera sa valeur comme une valeur booléenne.
Veuillez suivre les étapes suivantes pour résoudre ce problème:
1)ouvrez le Fichier à l'Emplacement suivant, comme dans linux scénario le chemin d'accès est:
var\www\html\admin\libraries\Composer\vendor\doctrine\dbal\lib\Doctrine\DBAL\Platforms\MySqlPlatform.php
2)Accédez à cette Fonction initializeDoctrineTypeMappings()
3)Pas simplement ajouter l'entrée de votre mapping, comme dans mon cas, j'ai mappé peu avec l'opérateur Booléen comme indiqué ci-dessous:
'bit' => 'boolean',
4)Recharger votre Application et il va fonctionner.