Laravel Schema Builder 更新默认值

Posted

技术标签:

【中文标题】Laravel Schema Builder 更新默认值【英文标题】:Laravel Schema Builder Update Default Value 【发布时间】: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';");

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

【问题讨论】:

【参考方案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';");` ***.com/a/14767467/788445

以上是关于Laravel Schema Builder 更新默认值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel migrate:refresh 在 Composer 更新后不起作用

更新到 Laravel 5.3 后播种时调用未定义的方法 Illuminate\Database\Query\Builder::lists()

Laravel:使用 Query Builder 或 Eloquent ORM 时在每次插入/更新时执行一些任务

在更新到Laravel 5.3后播种时调用未定义的方法Illuminate Database Query Builder :: lists()

在 Laravel 5 迁移中更新表并添加数据

在 MySQL 中更新记录时,Laravel 的 useCurrent() 不起作用