Yii2 - 迁移时SluggableBehaviour不工作。

问题描述 投票:0回答:1

我已经创建了一个迁移,将一些数据插入到一个表中。

$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
            ]

运行迁移后,slug字段为空。我有其他行为。时间戳,Blameable,和Ip,他们工作正常。

有什么想法吗?

php yii2 yii2-basic-app yii2-behaviors
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.