当前位置: 首页 > 知识库问答 >
问题:

YII2-迁移时不起作用的迟缓行为

谷梁涵忍
2023-03-14

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

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

运行后,迁移段块字段为空。 我有其他的行为:时间戳,可责备的,和Ip他们工作得很好。

有什么想法吗?

共有1个答案

林龙野
2023-03-14

我已经解开了谜团。 SlaggableBehavior是在“验证之前”触发的,所以我只需要补充一下:

"$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();
 类似资料:
  • 如果运行,它会失败 未找到基表或视图:1146表*.迁移不存在。 数据库是空的。 如果我运行我会看到迁移表,但它是空的。 DB显示迁移表,但它是空的。 如果我再次运行,数据库再次为空,我会得到相同的错误: 未找到基表或视图:1146表*.迁移不存在。 也许有人知道这里发生了什么。

  • 我似乎无法用knex迁移数据库。在up命令中,它失败。 我得到一个错误。 我发誓它昨天还在工作。我试着删除并重建数据库。运气不好。怎么了?我该如何解决这个问题? 在knex消息源中似乎没有任何明显的挖掘。

  • 我是laravel的新手,我正在探索如何进行迁移。我创建了一个新的用户表,当我运行时,它会给我。我运行了然后运行了,但没有任何乐趣。我如下所示配置了我的。env文件: db_connection=mysql db_host=127.0.0.1 db_password=secret

  • 问题内容: 我有Yii2高级模板,我想为前端视图设置翻译,这是我所做的: 然后我加在 和 我在视图中使用它为: 但翻译无效,显示为 问题答案: 您只需按照以下步骤操作…… 步骤1: 在目录中,创建文件夹。 步骤2:在目录内创建文件,内容如下: 注意: 确保将所有必需的语言添加到“语言”数组中。在上面的示例中,我为Generate Yii2 Framework多语言添加了英语和俄语。 步骤3:在文件

  • 错误:java.lang.IllegalStateException:迁移未正确处理:insta_alerts(org.altruist.bajajexperia.models.ceInstaViewDetailSDTo)。 预期:

  • 我想将我的项目迁移到空安全,但是dependecie不支持空安全:

  • 问题内容: 我在夹层中使用Django1.7。我创建了简单的配置文件(根据Mezzanine文档),存储在单独的应用程序“配置文件”中: 创建迁移会返回: 当我运行“迁移配置文件”时: 问题是,当我尝试打开与mezzanine.accounts相关的任何页面(例如更新帐户)时,它崩溃并显示: 我做错了什么? 问题答案: 在MySQL数据库中,从表中删除行。 删除迁移文件夹中的所有迁移文件。 重试并

  • 我正在使用Artisan::call('迁移');在Laravel控制器方法中,它在Laravel版本为4.1时工作。使用作曲家更新命令更新Laravel后(并在composer.js中设置laravel/框架:4.2.*),此控制器方法(因为这是其中唯一的命令)不再工作。 我甚至还加了“密码”= 这已经发生了:http://laravel.io/forum/06-02-2014-not-able