![](/img/trans.png)
[英]How to add a column after another column in sqlite using Laravel migrations?
[英]How to add one column to a DB table with Laravel migrations?
我正在使用Laravel迁移文件来帮助为我的项目设置MariaDB模式。 它适用于架构的初始表设置,但是在创建它之后,如何(如果可能的话)如何向迁移文件中添加一个字段,并在数据库中仅创建一个字段而不会影响任何现有的字段/数据?
例如,假设我有一个如下所示的up
方法:
public function up()
{
Schema::create('test_table', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
然后,我想添加一个desc
字段,如下所示:
public function up()
{
Schema::create('test_table', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('desc')->nullable();
$table->timestamps();
});
}
如果我在添加desc
字段后运行php artisan migrate
desc
,它将按预期工作,还是会弄乱现有的东西? 我不敢尝试不知道会发生什么,我想首先检查。
另外,我尝试查看Laravel文档以找到此问题的答案( https://laravel.com/docs/5.7/migrations ),但是找不到任何相关的内容。
谢谢。
通常情况下,你应该创建新的迁移,你只需要添加新的领域。 方法up
应该是这样的:
public function up()
{
Schema::table('test_table', function (Blueprint $table) {
$table->string('desc')->nullable()->after('name');
});
}
你不要在这里使用的通知Schema::create
,但Schema::table
来更新现有的表。
当然,如果您尚未部署应用程序并且可以从头开始,则可以修改现有迁移,但是如果您不确定,最好的方法是在仅修改现有表的情况下创建新迁移。
您应该在终端运行命令中执行此操作
php artisan make:migration add_desc_field_in_test_table --table=test_table
然后,在migration
文件的up()
函数中,创建字段:
public function up()
{
Schema::table('test_table', function (Blueprint $table) {
$table->string('desc')->nullable();
});
}
它不会弄乱当前的表结构。 它将仅在test_table
添加 desc
列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.