改变模式生成器中的列长度?
Posted
技术标签:
【中文标题】改变模式生成器中的列长度?【英文标题】:Alter column length in Schema builder? 【发布时间】:2012-11-28 03:34:27 【问题描述】:我有两个字段需要增加字符限制。我通读了文档,令我惊讶的是,我没有找到它的选择。有可能吗?如果没有,我应该如何解决这个问题?
我可以删除该列并使用正确的属性重新创建它,但我不想丢失数据库中的任何数据。
【问题讨论】:
【参考方案1】:使用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)');
替换mytable
、mycolumn
、new-length
和old-length
。
对于 Laravel 5+,将 DB::query
替换为 DB::statement
。
【讨论】:
在 Laravel 5.1 中,我不得不将 DB::query 更改为 DB::statement。 我认为SQL命令大写,表名和列名小写更容易接受。【参考方案2】:如果名称是系统的关键字,则使用 `` 作为列名。否则您将收到“语法错误或访问冲突”。
DB::query("alter table MYTABLE modify `MYCOLUMN` varchar(new-length)");
【讨论】:
【参考方案3】:对于 Laravel 4
DB::update('ALTER TABLE `my_table` MODIFY `my_column` VARCHAR(<new length>)');
【讨论】:
我是 laravel 4 的新手...如何运行更新任务?【参考方案4】:对于 Laravel 5:
Schema::table('users', function($table)
$table->string('name', 50)->change();
);
查看docs 了解更多信息。
【讨论】:
以上是关于改变模式生成器中的列长度?的主要内容,如果未能解决你的问题,请参考以下文章
按照 C# 中的“digitStringDigit”等特定模式生成唯一 ID