2012-04-04 10 views
14

Wie kann ich PHP passieren Datetime Objekt als Wert für Datenbankfeld mit Lehre \ DBAL?mit insert() Methode Datetime-Wert mit PHP Lehre DBAL einfügen 2

$ DB ist eine Lehre \ DBAL \ Connection Instanz.

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

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

Der obige Code funktioniert nicht und Dokumentation ist knapp.

ich sicher wusste, dass Sie Datetime Objekte direkt unter Verwendung eines anderen DBAL Methoden zur Verfügung stellen kann, ist es möglich, dies mit Einsatz zu tun()?

+1

Lösung gefunden. Übergeben Sie das dritte Argumentarray ('datetime') einfach an die Methode insert(). Verwenden Sie "datetime" für DateTime, PDO :: PARAM_STR für Strings und PDO :: PARAM_INT für Integer. –

Antwort

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

Haben den Trick!))

+0

Was ist mit der Reihenfolge der Elemente im ersten Array? Ich nehme an, wenn ein Array von Schlüssel-Wert-Paaren rechts als Funktionsargument deklariert ist, stimmt die Reihenfolge der Schlüssel mit der Reihenfolge überein, in der sie deklariert werden. Was aber, wenn das Schlüssel-Wert-Paar-Array dynamisch von einer anderen Funktion erzeugt wird? –