2011-12-03 20 views
6

Desidero scrivere un'estensione GIS (dati geospaziali) per il mio progetto Doctrine 2.Estensione GIS per Doctrine 2

So come scrivere semplici funzioni e tipi personalizzati. Per poter ospitare il formato speciale di archiviazione MySQL, ho bisogno di utilizzare alcune funzioni SQL (GeomFromWKB() e AsBinary()) durante il recupero/archiviazione dei dati.

Non riesco a trovare un posto dove dico a Doctrine 2 questo. A mio avviso, i metodi convertToPHPValue() e convertToDatabaseValue() non sono il posto giusto.

risposta

1

Quello che ho scoperto finora: Secondo il canale IRC, convertToPHPValueSQL() e convertToDatabaseValueSQL() farà parte della prossima release, e offrirà la funzionalità richiesta. Una volta disponibile, definire un CustomType è abbastanza semplice.

+0

Appena aggiornato: nella serie Doctrine 2.1.x queste funzioni sono state incluse. Vedi qui: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types –

1

Se si desidera chiamare la funzione SQL in doctrine2, è possibile farlo Expression Func ma ciò funzionerà solo con DQL.

Di seguito è riportato un esempio che spiega come utilizzare la funzione DATE_DIFF non inclusa in doctrine.

$qb = $repository->createQueryBuilder('l'); 
$qb->expr()->lte(new Doctrine\ORM\Query\Expr\Func('DATE_DIFF',array('lo.start_date', 'CURRENT_DATE()')),'0'); 
+0

Grazie, che è un buon suggerimento per lo SQL occasionale che è necessario solo una volta in un progetto. – Tom