简体   繁体   English

推动多种行为(例如i18n &&可版本控制)

[英]Propel multiple behaviors (e. i18n && versionable)

I am trying out Propel and seeing if its acceptable for my project. 我正在试用Propel,并查看它是否适合我的项目。

When combining multiple Behaviors, a certain behavior does not inherit other behaviors. 当组合多个行为时,某个行为不会继承其他行为。

Example schema.xml: 示例schema.xml:

<table name="item" phpName="Item">
    <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
    <column name="name" type="varchar" size="255" required="true" />

    <behavior name="sluggable" />

    <behavior name="sortable" />

    <behavior name="i18n">
        <parameter name="i18n_columns" value="name" />
    </behavior>

    <behavior name="versionable">
        <parameter name="log_created_at" value="true" />
        <parameter name="log_created_by" value="true" />
        <parameter name="log_comment" value="true" />
    </behavior>
</table>

Example controller: 控制器示例:

// create example records
$item = new Item();

// create version with i18n record
$item->setLocale('en_US');
$item->setName('Hello');
$item->save();

// create version with i18n record
$item->setLocale('is_IS');
$item->setName('World');
$item->save();

// get created newly created item
$item = ItemQuery::create()
  ->findPK(1);

foreach ($item->getAllVersions() as $itemVersion)
{
    echo 'us name: ' . $itemVersion->setLocale('en_US')->getName() . "\n";

    echo 'is name: ' . $itemVersion->setLocale('is_IS')->getName() . "\n";
}

This throws error that the method setLocale() does not exists, as we are positioned in the class "BaseItemVersion.php", which does not have any BaseItemI18n.php methods. 由于我们位于类“ BaseItemVersion.php”中,该方法没有任何BaseItemI18n.php,因此引发了setLocale()方法不存在的错误。

Is there any way to solve this ? 有什么办法解决这个问题?

Thanks. 谢谢。

http://propelorm.org/behaviors/versionable.html http://propelorm.org/behaviors/versionable.html

Versioning of related objects is only possible for simple foreign keys. 只有简单的外键才可以对相关对象进行版本控制。 Relationships based on composite foreign keys cannot preserve relation versionning for now. 基于复合外键的关系暂时无法保留关系版本。

Since i18n adds complex foreign keys, the two won't work together. 由于i18n添加了复杂的外键,因此两者无法一起使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM