Php 向现有表中添加列
我进行了一个名为Php 向现有表中添加列,php,laravel,laravel-5,Php,Laravel,Laravel 5,我进行了一个名为projects\u table的迁移,该迁移正在运行 Schema::create('projects', function(Blueprint $table) { $table->increments('id'); $table->string('name'); $table->integer('user_id'); }); 我需要添加一个名为project\u settings的新列。我想我可以补充一下 $table->text(
projects\u table
的迁移,该迁移正在运行
Schema::create('projects', function(Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->integer('user_id');
});
我需要添加一个名为project\u settings
的新列。我想我可以补充一下
$table->text('project_settings')代码>
然后运行php artisan migrate
,但我错了,没有工作。然后我阅读并学会了使用Schema::table(…)代码>因此我将现有迁移(项目表)更改为:
但这仍然不起作用。通过创建一个新的迁移ProjectsTableNewField
并简单地添加
Schema::table('projects', function(Blueprint $table) {
$table->text('project_settings');
});
我的问题是,在拉雷维尔这样做对吗?添加列是一项非常基本的任务,如果我必须为每次数据库更改创建迁移,我认为迁移文件夹将很快变长。正确的方法是什么
编辑:我还认为在
处创建一个字段和在
处更新一个字段对于迁移非常重要。我还将添加这些字段是的,当您想要更新表的结构时,创建一个新的迁移是正确的
它允许您在实时服务器上“推送”这些修改,而不会破坏现有数据库
这是另一种方法,但如果您已经在表中存储了数据,则可能不适用:
使用php artisan migrate:reset回滚迁移
更新现有迁移文件并在字段列表中添加新字段
再次运行迁移:php artisan迁移
请记住,这将删除所有现有表,如果您已经存储了一些数据,将导致数据丢失。是的,当您要更新表的结构时,创建新的迁移是正确的做法
它允许您在实时服务器上“推送”这些修改,而不会破坏现有数据库
这是另一种方法,但如果您已经在表中存储了数据,则可能不适用:
使用php artisan migrate:reset回滚迁移
更新现有迁移文件并在字段列表中添加新字段
再次运行迁移:php artisan迁移
请记住,这将删除所有现有表,如果您已经存储了一些数据,则会导致数据丢失。您应该有一个数据库迁移文件,该文件的组织方式与以下类似:
public function up()
{
Schema::create('table_name', function(Blueprint $table)
{
$table->increments('id');
//custom fields here
$table->timestamps();
});
}
public function down()
{
Schema::drop('table_name');
}
通过运行以下命令最初创建表:
php artisan migrate
php artisan migrate:refresh
更改所需的自定义字段后,请运行以下命令:
php artisan migrate
php artisan migrate:refresh
这将按照每次迁移的顺序运行down函数,然后使用自定义字段重新创建它们。这使您不必管理大量迁移文件。不过,出于显而易见的原因,您永远不希望在生产服务器上使用此功能
在深入研究php编程之前,请仔细考虑一下数据建模,从长远来看,无论是从组织的角度还是从重复数据库的角度来看,您都会感谢自己
请记住,如果希望使用样本数据,则需要使用播种机。每次你这样做的时候,你的桌子都会被擦干净。如果您正在创建一个新表,并且没有修改以前的表,那么您可以只运行第一个命令
要使用其他命令,请使用php artisan
命令查看可用的内容。您应该有一个数据库迁移文件,其组织方式类似于以下内容:
public function up()
{
Schema::create('table_name', function(Blueprint $table)
{
$table->increments('id');
//custom fields here
$table->timestamps();
});
}
public function down()
{
Schema::drop('table_name');
}
通过运行以下命令最初创建表:
php artisan migrate
php artisan migrate:refresh
更改所需的自定义字段后,请运行以下命令:
php artisan migrate
php artisan migrate:refresh
这将按照每次迁移的顺序运行down函数,然后使用自定义字段重新创建它们。这使您不必管理大量迁移文件。不过,出于显而易见的原因,您永远不希望在生产服务器上使用此功能
在深入研究php编程之前,请仔细考虑一下数据建模,从长远来看,无论是从组织的角度还是从重复数据库的角度来看,您都会感谢自己
请记住,如果希望使用样本数据,则需要使用播种机。每次你这样做的时候,你的桌子都会被擦干净。如果您正在创建一个新表,并且没有修改以前的表,那么您可以只运行第一个命令
要使用其他命令,请使用php artisan
命令查看可用的内容。这是正常行为,但通常只有在应用程序已投入生产或测试网站的数据很重要且不想丢失时才执行此类迁移
当您正在开发并且您拥有的数据不重要时,您可以更改迁移,就像您在这里所做的那样:
Schema::table('projects', function(Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('project_settings');
$table->integer('user_id');
});
然后重新运行迁移并进行刷新:
php artisan migrate:refresh
这将重置所有迁移并再次运行它们
此外,如果您使用的是种子机,则只需一个命令即可运行所有迁移并为数据库种子:
php artisan migrate:refresh --seed
这是正常的行为,但通常只有当应用程序已经在生产中,或者测试网站的数据很重要并且您不想丢失时,才执行这种类型的迁移
当您正在开发并且您拥有的数据不重要时,您可以更改迁移,就像您在这里所做的那样:
Schema::table('projects', function(Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('project_settings');
$table->integer('user_id');
});
然后重新运行迁移并进行刷新:
php artisan migrate:refresh
这将重置所有迁移并再次运行它们
此外,如果您使用的是种子机,则只需一个命令即可运行所有迁移并为数据库种子:
php artisan migrate:refresh --seed
您可以非常简单地将新列添加到现有表中
使用您喜欢的任何名称进行新迁移:
php artisan make:migration new_co