0

我正在试用 Propel,看看它是否适合我的项目。

组合多个 Behavior 时,某个行为不会继承其他行为。

示例 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>

示例控制器:

// 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";
}

这会引发setLocale()方法不存在的错误,因为我们位于“BaseItemVersion.php”类中,该类没有任何 BaseItemI18n.php 方法。

有没有办法解决这个问题?

谢谢。

4

1 回答 1

0

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

相关对象的版本控制仅适用于简单的外键。基于复合外键的关系目前无法保留关系版本控制。

由于 i18n 添加了复杂的外键,因此两者无法一起使用。

于 2013-07-23T10:13:37.087 回答