Internationalization 推进行为i18n和可归档

Internationalization 推进行为i18n和可归档,internationalization,archive,propel,Internationalization,Archive,Propel,我正在使用propel,在我的一张桌子上设置了两种行为: <behavior name="archivable" /> <behavior name="i18n"> <parameter name="i18n_columns" value="name" /> <parameter name="default_locale" value="de" /> </behavior> 这是propel中的一个bug还是我在这里遗漏了什么

我正在使用propel,在我的一张桌子上设置了两种行为:

<behavior name="archivable" />
<behavior name="i18n">
  <parameter name="i18n_columns" value="name" />
  <parameter name="default_locale" value="de" />
</behavior>

这是propel中的一个bug还是我在这里遗漏了什么?

您必须手动归档i18n信息,方法是使表也可归档,并重写生成的archive()方法。推进博客中给出了一个示例:

class Book extends BaseBook
{
  public function archive(PropelPDO $con = null)
  {
    // archive the book reviews
    BookReviewQuery::create()
      ->filterByBook($this)
      ->archive($con);
    // archive the current object
    return parent::archive($con);
  }
}

来源:

这里只是一个猜测,但是
可归档
行为基于当前表为归档创建一个新表,并在保存/删除时将数据复制到其中。由于
i18n
行为会创建一个新表并从所需表中删除列,
archivable
将不会看到这些删除的列。我不认为有任何办法可以解决这个问题,但你可以克隆这种行为,并尝试让它发挥作用。
class Book extends BaseBook
{
  public function archive(PropelPDO $con = null)
  {
    // archive the book reviews
    BookReviewQuery::create()
      ->filterByBook($this)
      ->archive($con);
    // archive the current object
    return parent::archive($con);
  }
}