2017-03-22 2 views
1

Ich möchte Carbon Objekte in meiner Symfony 3.2-Anwendung anstelle des SPL \ DateTime-Objekts verwenden. Ich habe eine Reihe von DoctrineExtension-Klassen in here gefunden.Doctrine2-Typen in Symfony3 überschreiben

meine config.yml Datei Editiert:

Doctrine\DBAL\Types\Type::getTypesMap() 

Und die Abbildung auch richtig funktioniert (liefert carbondatetime):

doctrine: 
    dbal: 
     ... 
     types: 
      carbondatetime: DoctrineExtensions\Types\CarbonDateTimeType 
      carbondate: DoctrineExtensions\Types\CarbonDateType 
      carbontime: DoctrineExtensions\Types\CarbonTimeType 
     mapping_types: 
      datetime: carbondatetime 
      date: carbondate 
      enum: string 
      time: carbontime 

ich erfolgreich überprüfen, ob die Typen mit geladen werden

$this->getDoctrine()->getManager() 
    ->getConnection()->getDatabasePlatform() 
    ->getDoctrineTypeMapping('datetime'); 

Ich führe eine Abfrage über ein Doctrine-Repository und immer noch DateTime Objekte. Es ist in 2 Fällen arbeiten:

  • das Entity Wechsel zu @ORM\Column(type="carbondatetime")
  • Oder den folgenden Code ausführen \Doctrine\DBAL\Types\Type::overrideType('datetime', 'DoctrineExtensions\Types\CarbonDateTimeType');

Gibt es eine Best-Practice Überschreibung die Lehre DBAL Typen? Vorzugsweise in der YAML-Konfiguration.

Dank

Antwort

4

Woah .... immer so, sobald Sie die Frage stellen Sie die Lösung finden:

doctrine: 
    dbal: 
     ... 
     types: 
      datetime: DoctrineExtensions\Types\CarbonDateTimeType 
      date: DoctrineExtensions\Types\CarbonDateType 
      time: DoctrineExtensions\Types\CarbonTimeType 
     mapping_types: 
      enum: string