Doctrine2 soluzione per la mappatura MySql ‘po’ di dati di tipo

Ho un paio di colonne nel mio schema di database po ‘ di tipi di dati e sto avendo problemi con il Doctrine2 per la mappatura. Io continuo a ricevere:

Unknown tipo di database bit richiesto, Doctrine\DBAL\Piattaforme\MySqlPlatform non la supporta.

C’è qualche lavoro in giro? Stavo pensando, solo cambiando il tipo di dati booleano e basta usare true e false affermazioni, ma questo significherebbe cambiare lo schema su larga scala, che io non ho tempo per.

 

4 Replies
  1. 6

    È possibile creare il proprio, di tipo personalizzato per la Dottrina della fede.

    1. Creare un nuovo tipo estendendo Doctrine\DBAL\Types\Type classe.
    2. Ignorare convertToPHPValue() e convertToDatabaseValue() metodi.
    3. Registrare un nuovo tipo:

      \Doctrine\DBAL\Types\Type::addType('abc', 'Your\\Custom\\Type\\AbcType');
      
      $dbPlatform = $em->getConnection()->getDatabasePlatform();
      $dbPlatform->registerDoctrineTypeMapping('abc', 'abc');

    Per saperne di più sulla Dottrina della pagine di documentazione

    • potete per favore suggerire da dove dovrei eseguire tale codice (da prompt dei comandi? Io sono su windows): $dbPlatform = $em->getConnection()->getDatabasePlatform(); $dbPlatform->registerDoctrineTypeMapping (“abc”, “abc”);
    • Dovrebbe essere in una sorta di applicazione di avvio/db file di configurazione in cui si dispone di accesso a DatabasePlatform.
  2. 31

    Utilizzare mapping_types nel config.yml

    doctrine:
        dbal:
            driver:%% database_driver
             host:%% database_host
             Port:%% database_port
             dbname:% database_name%
             user:%% database_user
             password:%% database_password
             charset: UTF8
             mapping_types:
                 bit: boolean
    • Che ha funzionato bene per me 🙂
    • Può funzionare come una soluzione rapida, ma bit tipo è qualcosa di diverso rispetto a un valore booleano. Così guardare fuori si può perdere alcune informazioni.
  3. 10

    Nel caso In cui si utilizza BIT colonna per memorizzare un boolean, fate questo:

    // get currently used platform
    $dbPlatform = $em->getConnection()->getDatabasePlatform();
    
    // interpret BIT as boolean
    $dbPlatform->registerDoctrineTypeMapping('bit', 'boolean');

    Ora ogni volta che si mappa una struttura a colonna di bit, la dottrina, il 2 interpreterà il suo valore booleano.

  4. 1

    Si prega di seguire la seguente procedura per risolvere questo problema:

    1)aprire il File nel seguente Percorso come in linux scenario il percorso è:

    var\www\html\admin\libraries\Composer\vendor\doctrine\dbal\lib\Doctrine\DBAL\Platforms\MySqlPlatform.php

    2)Vai a questa Funzione initializeDoctrineTypeMappings()

    3)No semplicemente aggiungere la voce di corrispondenza, come nel mio caso, ho mappato po ‘ con l’operatore Booleano, come indicato di seguito:

    ‘bit’ => ‘boolean’,

    4)Ricaricare la tua App e funziona.

Lascia un commento