在“架构”构建器中更改列长度?

时间:2012-12-10 17:13:23

标签: database schema builder laravel alter

我有两个字段需要增加字符限制。我仔细阅读了文档,令我惊讶的是我找不到它的选择。有可能吗?如果没有,我该如何解决这个问题?

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

4 个答案:

答案 0 :(得分:26)

对于Laravel 4

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

答案 1 :(得分:22)

使用Raw Queries

/**
 * 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::query替换为DB::statement

答案 2 :(得分:17)

对于Laravel 5:

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

检查docs以获取更多信息。

答案 3 :(得分:1)

如果名称是系统的关键字,请使用``作为列名。否则,您将收到“语法错误或访问冲突。”

DB::query("alter table MYTABLE modify `MYCOLUMN` varchar(new-length)");