如何根据Doctrine2中表中的另一个字段更新字段?

时间:2012-07-10 19:06:53

标签: php doctrine-orm sql-update dql

我的表格有两列:priceconstant

我想对表格中的所有条目运行更新,以根据price更新constant * coefficient

我怎么能这样查询?

1 个答案:

答案 0 :(得分:1)

您可以使用DQL查询执行此操作:

$em->createQuery('
    UPDATE entityClass e
    SET e.price = e.constant * 33;
');

您也可以使用原始SQL执行此操作:

$em->getConnection()->executeUpdate('
    UPDATE entity_table_name AS e
    SET e.price = e.constant * 33;
');

您还可以在preUpdate&上添加一个监听器。 prePersist doctrine事件,以便这些值自动更新。

有关示例,请参阅http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#preupdate

因此,每次保存实体时,它都会自动更新相关字段。