2012-04-04 22 views
14

come posso passare DateTime oggetto di PHP come un valore per il campo di database utilizzando Doctrine \ DBAL?utilizzando il metodo() Inserisci per inserire valore DateTime con PHP Doctrine DBAL 2

$ DB è una connessione Doctrine \ DBAL \ esempio.

$DB->insert('table_name', [ 
    'field' => new \DateTime(), 
]); 

// Catchable fatal error: Object of class DateTime could not be converted to string 

Il codice di cui sopra non funziona e la documentazione è scarsa.

sapevo per certo che è possibile fornire DateTime oggetti utilizzando direttamente altri metodi DBAL, è possibile farlo con inserto()?

+1

Soluzione trovata. Basta passare la matrice del terzo argomento ('datetime') al metodo insert(). Utilizzare 'datetime' per DateTime, PDO :: PARAM_STR per stringhe e PDO :: PARAM_INT per numeri interi. –

risposta

23
$DB->insert('table_name', [ 
    'foo' => 'foo', 
    'bar' => 17, 
    'field' => new \DateTime(), 
], [ 
    PDO::PARAM_STR, 
    PDO::PARAM_INT, 
    'datetime', 
]); 

Ha fatto il trucco!))

+0

E l'ordine degli elementi nel primo array? Presumo che quando la matrice di coppie chiave-valore sia dichiarata giusta come argomento di funzione, l'ordine delle chiavi corrisponda all'ordine di esse che vengono dichiarate, tuttavia cosa succederebbe se l'array di coppie valore-chiave fosse creato dinamicamente da qualche altra funzione? –

Problemi correlati