【问题标题】:Laravel Schema Builder Update Default ValueLaravel Schema Builder 更新默认值
【发布时间】:2013-10-19 14:51:57
【问题描述】:

尝试设置迁移,使我已经存在的“活动”字段具有默认值“1”。

我在文档中看到我可以使用类似的东西:

$table->integer('active')->default(1);

但是我在迁移中尝试了这个但没有成功,我猜是因为该字段已经存在。有没有办法使用架构构建器正确管理现有字段?

我目前的迁移:

public function up()
{
    Schema::table('scores', function($table){
        $table->integer('active')->default(1);
    });
}

编辑:

从我目前所阅读的内容来看,查询生成器无法做到这一点。但是当我尝试运行原始查询时:

DB::query("ALTER TABLE `scores` CHANGE COLUMN `active` `active` int(11) NOT NULL DEFAULT '1';");

我收到“方法'查询'不存在错误”,所以我猜这个方法名称已更改我只是找不到更改为的内容

【问题讨论】:

    标签: laravel migration database-schema eloquent


    【解决方案1】:

    看起来 DB::query() 已更改为 DB::statement()

    这成功了:

    DB::statement("ALTER TABLE `scores` CHANGE COLUMN `active` `active` int(11) NOT NULL DEFAULT '1';");
    

    【讨论】:

    • 由于您没有更改列的名称,因此您可以使用 MODIFY COLUMN 代替 CHANGE COLUMN 并省略语句中的第二个活动。新语句如下: DB::statement("ALTER TABLE scores MODIFY COLUMN active int(11) NOT NULL DEFAULT '1';");` stackoverflow.com/a/14767467/788445
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2015-11-26
    • 2011-06-16
    • 2010-12-07
    • 1970-01-01
    • 2018-10-08
    • 2020-02-28
    相关资源
    最近更新 更多