J'ai ajouté un type personnalisé comme: et dans mon démarrage de l'application: p> Cependant Je continue à obtenir ce qui suit: p> ALTER TABLE product_price CHANGE price price DECIMAL(10,2) DEFAULT NULL
4 Réponses :
Vous ne dites pas la plate-forme DBAL sur votre type, donc évidemment, les utilitaires introspections de schéma Dbal ne peuvent pas la reconnaître. Pour enregistrer le type, vous pouvez le faire suivant:
use Doctrine\DBAL\Types\Type; use My\SuperBundle\Types\Money; class MyBSuperBundle extends Bundle { public function boot() { /* @var $em \Doctrine\ORM\EntityManager */ $entityManager = $this->container->get('doctrine.orm.entity_manager'); if( ! Type::hasType(Money::MONEY)) { Type::addType(Money::MONEY, 'My\SuperBundle\Types\Money'); $entityManager ->getConnection() ->getDatabasePlatform() ->registerDoctrineTypeMapping('decimal', Money::MONEY); } } }
-> registreDoctrineTypapping ("décimal", argent :: argent); Ou -> registerdoctrinetypapping ('décimal (10,2)', argent :: argent); ?
Il devrait être sans paramétrisation spécifique.
Merci de votre aide. Malheureusement, ça n'a pas fait l'affaire. J'ai 3 types (argent, poids et quantité) tous résultent de la décimale (10,2) pourraient-il être le cas? À la section de démarrage, j'ai déclaré tout comme décimal que vous avez suggéré
Avez-vous envisagé d'utiliser le type numérique intégré à la place?
Vous voulez dire au lieu d'utiliser décimal ou au lieu d'utiliser des types personnalisés?
Au lieu d'utiliser des types personnalisés.
Je voudrais l'éviter, car il est probable que les spécifications pour l'argent, la quantité et les champs de poids changent plus tôt ou tard.
On dirait que j'ai manqué "Vous ne pouvez que mapper un type de base de données à un type de doctrine exactement. Les fournisseurs de base de données permettant de définir des types personnalisés tels que PostgreSQL peuvent aider à surmonter ce problème." de docs.doctrine -project.org/projects/doctrine-dbal/fr/latest/... donc pas de types personnalisés pour l'instant :(
Il existe une solution alternative de faire cela à l'aide de configurations.
config.yml: p> sources: p>
Merci! Juste une note que si vous n'utilisez pas la section "Connections", vous pouvez mettre l'entrée "Mapping_Types" directement dans la section "Dbal".
Vous devez remplacer la méthode source: Utilisez la colonne Commentaires pour une doctrine supplémentaire Type Inference P> P> requisseSQLCommentHint (abstractplatform $ plateforme) code> et retourner
true code>. Comme ça, la doctrine se souviendra du type personnalisé.
J'ai eu le même problème avec zf2.
J'ai résolu Supprimer l'union d'union forte> dans mon nom de type personnalisé. P> faux: p> 'doctrine_type_mappings' => [
'customtype' => 'customtype'
],
On dirait qu'il y a un bug Doctrine-Project.org/jira/Browse/...
J'ai fermé la question comme incomplète car ce n'était pas reproductible.