2011-01-29 20 views
9

Sto sviluppando un'applicazione con Symfony2. Symfony2 utilizza Doctrine 2 per DBAL e ORM. Per quanto ne so, Doctrine2 non ha suport per il tipo di dati BLOB. Tuttavia voglio implementare il supporto BLOB attraverso il tipo di dati mappatura personalizzata:Tipo di dati personalizzati Doctrine

http://www.doctrine-project.org/docs/dbal/2.0/en/reference/types.html

Comunque sto lottando per capire dove deve andare questa parte.

<?php 
Type::addType('money', 'My\Project\Types\MoneyType'); 
$conn->getDatabasePlatform()->registerDoctrineTypeMapping('MyMoney', 'money'); 

Qualcuno lo ha attraversato?

Il motivo per cui ho bisogno di un tipo BLOB è che voglio importare il mapping dal database MySQL esistente.

+0

ha appena risposto qui: http://stackoverflow.com/a/9133207/433927 – daSn0wie

risposta

0

dopo aver letto this example implementation of the blob datatype, penso che questo dovrebbe andare nel tuo file boostrap.

+0

In realtà non sono quello che è il file di bootstrap in caso di Symfony. Puoi dare qualche suggerimento? – Websirnik

+0

@Websirnik: Penso che sia il metodo configure (o doctrineConfigure) del file projectConfiguration.php. – greg0ire

2

Secondo il link nella risposta precedente si può solo aggiungere al src/My/Project/MyProjectBundle.php

class MyProject extends Bundle 
{ 
    public function boot() 
    { 
     $em = $this->container->get('doctrine.orm.entity_manager'); 
     Type::addType('money', 'My\Project\Types\MoneyType'); 
     $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('MyMoney','money'); 
    } 
} 
6

Un'altra soluzione potrebbe essere quella di registrare il tipo personalizzato nel file di configurazione

Hai solo bisogno di aggiungere che nel vostro file di configurazione:

# app/config/config.yml 
doctrine: 
    dbal: 
     types: 
      money: My\Project\Types\MoneyType 

potete trovare maggiori informazioni su come registrare un tipo di mappatura personalizzata in questo Symfony Cookbook entry