使用Propel Versionable时,在模型中调用save()

时间:2015-06-12 09:01:50

标签: php symfony propel

我刚将现有模型切换为Versionable

调试了很多之后,我现在意识到有很多情况我在模型中使用$this->save()很多次,这最终导致Version表中的重复条目。

是通过从模型中删除-save()方法来防止这种情况的唯一方法(我尝试了它,它可以工作)或者是否有另一种更简单的方法来防止版本创建过程中的内部循环它的储蓄?

1 个答案:

答案 0 :(得分:1)

由于您没有指定Propel的版本,我假设稳定版本为1.x,但以下内容可能适用于2.x,在撰写本文时为alpha5。

根据this documentation,您可以指定何时使用此方法保存新版本的模型行:

class Book extends BaseBook
{
  public function isVersioningNecessary($con = null)
  {
    return $this->getISBN() !== null && parent::isVersioningNecessary($con);
  }
}

如果该方法返回false,则覆盖最后一个版本;如果是,则创建新版本。

(文档稍有不妥,因为我认为父级应该采用$con参数:缺少那里,修复此处。)