Pregunta

Using Doctrine DBAL, I have some code that inserts a new row into the main database from a form values binded as $telephone_international and $surname.

After that is done, it inserts a new record into a duplicate database. $app['dbs']['backup']

If that's successful, the entry inserted previously the main database gets its copied value updated. The copied column is a timestamp, default value is 0, but the following code should change it to the current time.

$app['dbs']['main']->update('phonebook', array(
    'mediated'  => 'NOW()'
), array(
    'telephone' => $telephone_international, 
    'surname'   => $surname
));

But the value is still 0000-00-00 00:00:00. I wonder if 'NOW()' is being treated as a string.

¿Fue útil?

Solución

As i proposed in the comments above, this seems the way to go, as stated here:
http://doctrine-orm.readthedocs.org/en/2.0.x/cookbook/working-with-datetime.html

So try like this:

$app['dbs']['main']->update('phonebook', array(
    'mediated'  => new \DateTime("now")
), array(
    'telephone' => $telephone_international, 
    'surname'   => $surname
));

Otros consejos

I stumbled over the same problem. As there's no much and no good documentation for DBAL itself, I'm going to post my solution.

There's a last parameter which specifies the type (in the order of the data and identifcation array merged; as if they were in the same array):

$app['dbs']['main']->update('phonebook', array(
    'mediated'  => new DateTime()
), array(
    'telephone' => $telephone_international, 
    'surname'   => $surname
), array(
    'datetime',
    PDO::PARAM_STR,
    PDO::PARAM_STR
));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top