Stiamo usando Symfony per creare alcuni webservices. Utilizziamo Doctrine-ORM per archiviare entità e Doctrine-DBAL per recuperare dati poiché è molto leggero e può riutilizzare la connessione ORM (gestore entità).dottrina non persistono entità con valori booleani e DOP :: ATTR_EMULATE_PREPARES = falsi in Mysql
Quando si utilizza Doctrine-DBAL, i valori interi vengono restituiti a PHP come stringhe e si desidera avere valori interi, specialmente perché vengono ritentati in Javascript. A seguito di questa discussione How to get numeric types from MySQL using PDO? abbiamo installato mysql driver nativo sudo apt-get install php5-mysqlnd
e la configurazione del nostro symfony (dbal) configurazione con PDO :: ATTR_EMULATE_PREPARE = false:
doctrine:
dbal:
.
.
options:
20 : false # PDO::ATTR_EMULATE_PREPARES is 20
Con questa configurazione stiamo ottenendo interi quando i campi di MySQL sono interi. Fin qui tutto bene.
Ma c'è un nuovo problema: Quando si memorizzano le entità con valori booleani attraverso Doctrine-ORM l'entità non viene mantenuto. Vediamo nei registri l'inserto e il commit, ma il record non è nel database (se usiamo una tabella senza campi booleani definiti nell'entità, il record viene memorizzato).
Inoltre, non otteniamo alcun errore o eccezione, così troviamo questo molto pericoloso. Pensiamo che ci sia un bug nella libreria PDO, ma dobbiamo guardare un po 'di più in esso.
La domanda: Qualcuno ha sperimentato questo comportamento? qualche soluzione? Doctrine dovrebbe tener conto di questo?
nel mio caso, c'era un Preparare inviato, ma non di esecuzione, così nella mia caso ho visto qualcosa nei log. Trovato questo, grazie! – Dennis