我创建了一个迁移,以将一些数据插入到表中
$ transaction = $ this-> getDb()-> beginTransaction();
$widget= \Yii::createObject([
'class' => Widget::className(),
'scenario' => 'create',
'title' => 'Testimonial',
'source' => 'testimonial',
'content' => ''
]);
if (!$widget->insert(false)) {
$transaction->rollBack();
return false;
}
$transaction->commit();
在模型中,我配置了行为:
'sluggable' => [
'class' => SluggableBehavior::className(),
'attribute' => 'title',
'ensureUnique' => true
]
运行后,migration slug字段为空。我还有其他行为:时间戳记,可责怪行为和IP,它们工作正常。
有什么想法吗?
答案 0 :(得分:0)
我解决了这个谜。 SluggableBehavior在“验证之前”被触发,因此我只需要添加:
"$widget->validate();"
最终代码:
/*Widget*/
$transaction = $this->getDb()->beginTransaction();
$widget= \Yii::createObject([
'class' => Widget::className(),
'title' => 'Testimonial',
'source' => 'testimonial',
'content' => ''
]);
$widget->validate();
if (!$widget->insert(false)) {
$transaction->rollBack();
return false;
}
$transaction->commit();