在Schema Builder中修改列长度?

19

我有两个字段需要增加字符限制。我阅读了文档,但惊讶地发现没有相关选项。是否可能实现?如果不行,该如何解决?

我可以删除列并使用正确的属性重新创建它,但我不想在数据库中丢失任何数据。

4个回答

26

对于 Laravel 4

DB::update('ALTER TABLE `my_table` MODIFY `my_column` VARCHAR(<new length>)');

我是 Laravel 4 的新手... 我该如何运行更新任务? - roadev

24

使用原始查询

/**
 * Make changes to the database.
 *
 * @return void
 */
public function up()
{
  DB::query('ALTER TABLE mytable MODIFY mycolumn VARCHAR(new-length)');
}

/**
 * Revert the changes to the database.
 *
 * @return void
 */
public function down()
{
  DB::query('ALTER TABL mytable MODIFY mycolumn VARCHAR(old-length)');
}

替换mytablemycolumnnew-lengthold-length

对于Laravel 5+,请使用DB::statement 替换 DB::query


在Laravel 5.1中,我不得不将DB :: query更改为DB :: statement。 - Waqas
我认为将SQL命令大写,表名和列名小写更加可接受。 - NiRR

17

对于 Laravel 5:

Schema::table('users', function($table)
{
    $table->string('name', 50)->change();
});

请参考文档获取更多信息。


1
如果列名是系统关键字,请使用 `` 进行命名。否则,您将会收到“语法错误或访问违规”的信息提示。
DB::query("alter table MYTABLE modify `MYCOLUMN` varchar(new-length)");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接