Symfony1 Symfony条令可版本行为忽略字段

Symfony1 Symfony条令可版本行为忽略字段,symfony1,doctrine,behavior,Symfony1,Doctrine,Behavior,我的模式中有一个可版本化的表。例如,我不希望在更改状态时对其进行版本控制,而是希望在更改shippingPrice时对其进行版本控制 MyOrder: actAs: Timestampable: Versionable: versionColumn: version className: %CLASS%Version auditLog: true columns: userId: { type: intege

我的模式中有一个可版本化的表。例如,我不希望在更改状态时对其进行版本控制,而是希望在更改shippingPrice时对其进行版本控制

MyOrder:   
  actAs:
    Timestampable:
    Versionable:
      versionColumn: version
      className: %CLASS%Version
      auditLog: true   
    columns:
      userId: { type: integer, notnull: true }
      status: {type: enum, values: ["status1", "status2"]}
      shippingPrice: { type: float, notnull: true }
      #more columns

我该怎么做呢?

这篇文章可能会引起一些兴趣:

作者希望用Versionable嵌套I18N功能。问题略有不同,但他提出的解决方案可能有用


本质上,他推出了自己的版本。这不是最令人愉快的前景,但看看他是如何实现它的,这可能会为您自己节省一些时间。

这有点老套,但我认为应该做需要做的事情

我还没有测试过它,但我的理解是,如果执行dql update(),则不会触发Versionable

像这样

   $result = $this->createQuery()
          ->update('MyOrder m')
          ->set('m.status', $var)
          ->execute();
但是,如果检索对象,请对其进行更改并保存:

$m = MyOrderTable::getInstance()->findOneById($id);
$m->setShippingPrice($price);
$m->save();
然后将触发Versionable,因此您应该获得一个新版本

所以你可以用这个来解决这个问题