我正在试用Propel,看看它对我的项目是否可以接受。
组合多个行为时,某种行为不会继承其他行为。
示例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方法。
有什么方法可以解决这个问题吗?
感谢。
答案 0 :(得分:0)
http://propelorm.org/behaviors/versionable.html
只有简单的外键才能对相关对象进行版本控制。基于复合外键的关系现在无法保留关系版本。
由于i18n添加了复杂的外键,因此两者不能一起使用。