【问题标题】:Propel behavior i18n and archivable推动行为 i18n 和可归档
【发布时间】:2013-04-24 09:41:49
【问题描述】:

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

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

问题是,如果我归档该表的对象,则不会保存字段“名称”。显然在基类的“copyInto”方法中没有

$copyObj->setName($this->getName());

这是推进中的错误还是我在这里遗漏了什么?

【问题讨论】:

  • 这里只是猜测,但archivable 行为会根据当前表为存档创建一个新表,并在保存/删除时将数据复制到其中。由于i18n 行为会创建一个新表并从所需表中删除列,archivable 不会看到那些已删除的列。我认为没有办法解决这个问题,但您可以克隆该行为并尝试使其发挥作用。

标签: internationalization archive propel


【解决方案1】:

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

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);
  }
}

来源:http://propel.posterous.com/introducing-archivable-behavior-and-why-softd

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    相关资源
    最近更新 更多