我正在试用 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 方法。
有没有办法解决这个问题?
谢谢。