我不知道如何使用Laravel框架向现有的数据库表中添加新列。
我试图编辑迁移文件使用…
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
在终端中,我执行了php artisan migrate:install和migrate。
如何添加新列?
我不知道如何使用Laravel框架向现有的数据库表中添加新列。
我试图编辑迁移文件使用…
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
在终端中,我执行了php artisan migrate:install和migrate。
如何添加新列?
当前回答
如果这些解决方案都不起作用,您可能已经重新创建了迁移文件,然后添加了一个新列,并尝试运行php artisan migrate来更新旧表,它将尝试创建这个表,但这个表已经存在,所以它会给出一个错误。为了解决这个问题,将迁移文件重命名为以前命名的(以日期开始),然后添加新的列运行php artisan migrate,这实际上会更新旧的而不是创建,解决了我的问题。
其他回答
执行如下命令: PHP工匠迁移:新鲜——种子 它将删除表并重新添加它,更新添加到数据库的所有列
我将添加到mike3875的答案,供将来使用Laravel 5.1及后续版本的读者使用。
为了让事情变得更快,你可以像这样使用标志"——table":
php artisan make:migration add_paid_to_users --table="users"
这将自动添加up和down方法内容:
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
类似地,您可以在创建新的迁移时使用——create["table_name"]选项,这将为您的迁移添加更多的样板。这是个小问题,但在做大量的事情时很有帮助!
在拉拉维尔 8
php artisan make:migration add_columnname_to_tablename_table --table=tablename
然后在创建迁移之后
public function up()
{
Schema::table('users', function (Blueprint $table) {
// 1. Create new column
$table->datatype('column_name')->nullable();
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
// 1. Create new column
$table->dropColumn('column_name');
});
}
然后运行
php artisan migrate
如果遇到错误,则用创建表之前的日期重命名迁移名称,然后再次运行PHP artisan migrate
如果您正在使用Laravel 5,命令将是;
php artisan make:migration add_paid_to_users
所有用于制作东西的命令(控制器、模型、迁移等)都被移动到make:命令下。
PHP工匠迁移仍然是一样的。
向迁移文件中添加列并运行此命令。
php artisan migrate:refresh --path=/database/migrations/your_file_name.php