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


Call save() in model while using Propel Versionable

我刚刚将现有模型切换为Versionable .

经过相当多的调试,我现在意识到在模型中使用$this->save()的情况很多次,这最终导致版本表中的重复条目。

是通过从模型中删除-save()方法来防止这种情况的唯一方法(我试过了,它有效),还是有另一种更简单的方法可以在版本创建及其保存期间防止内部循环?

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

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

class Book extends BaseBook
{
  public function isVersioningNecessary($con = null)
  {
    return $this->getISBN() !== null && parent::isVersioningNecessary($con);
  }
}
如果该方法返回 false,则

覆盖最后一个版本;如果返回 true,则创建一个新版本。

(文档略有错误,因为我认为父级应该采用一个$con参数:那里缺少,此处修复)。