使用doctrine DBAL更新MySQL

时间:2015-10-28 16:18:59

标签: php mysql doctrine-orm doctrine onupdate

我使用doctrine DBAL 2.5.2和MySql 5.5

我创建了一个timestamp类型和ON UPDATE CURRENT_TIMESTAMP额外字段的字段。

当我从phpMyAdmin更改内容时,字段会更新并更改为当前时间戳,但是当我从Doctrine / dbal更新内容时,没有任何事情发生。我的意思是一切都有效,除了on update

我使用$app['db']->update('mytable', $data, array('my_id' => $id);

调用更新

如何从doctrine / dbal代码运行on update触发器?

编辑:

我添加此代码以检查我是否尝试更改日期。

if (isset($data['updated'])) unset($data['updated']);

1 个答案:

答案 0 :(得分:1)

  1. 请确保您根本不发送带有date的{​​{1}}字段,因为空字符串会导致零。
  2. 确保您实际更改数据,否则时间戳列也不会更新。
  3. 我已经设置了一个测试项目,它运行良好:

    $data

    表:

    $connectionParams = ...;
    $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
    $conn->update('user', array('name' => 'X3'), array('name' => 'X2'));
    

    一些测试数据:

    CREATE TABLE `user` (
      `id` int(11) NOT NULL,
      `name` text NOT NULL,
      `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    您可以重新测试并确保日期字段中的所有参数都正确吗?