如何将mysql中的表添加到laravel迁移中

如何将mysql中的表添加到laravel迁移中,mysql,laravel,laravel-6,laravel-migrations,Mysql,Laravel,Laravel 6,Laravel Migrations,我在MySQL中创建了一个现成的数据库。现在我创建了一个新的laravel6项目。 是否可以在不丢失数据的情况下将MySQL数据库中的表添加到laravel migrations中?还有一种方法可以生成从MySQL到laravel的迁移吗?首先,您必须创建迁移() 下一轮 php artisan migrate 最后,如果要更改表中的某些列,请将数据导入到新表中。。您可以创建 php artisan make:migration 在迁移过程中,您可以编写以下代码: Schema::tabl

我在
MySQL
中创建了一个现成的数据库。现在我创建了一个新的
laravel6
项目。
是否可以在不丢失数据的情况下将
MySQL
数据库中的
表添加到
laravel migrations
中?还有一种方法可以生成从
MySQL
laravel
的迁移吗?

首先,您必须创建迁移()

下一轮

php artisan migrate

最后,如果要更改表中的某些列,请将数据导入到新表中。。您可以创建

php artisan make:migration 
在迁移过程中,您可以编写以下代码:

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->change();
});
确保将条令/dbal依赖项添加到composer.json文件中

composer require doctrine/dbal

您只需检查表是否已经存在。 在迁移过程中执行以下操作:

if(!Schema::hasTable('TABLE_NAME')) {
    Schema::create('TABLE_NAME', function (Blueprint $table) {
        $table->bigIncrements('id');
        ...
    }
}

官方文档:

首先,您必须使用cli创建表php artisan migration:create_name_table,然后运行命令php artisan migrate

我认为OP询问的是创建Laravel应用程序之前存在的表。我刚刚做了“php artisan make:migration”,得到的参数“不够(缺少:“name”)。@Rwd,这些表在创建Laravel应用程序之前就已经存在了。在这种情况下,您必须使用
if(!Schema::hasTable('users')){…}
并将其包装到架构创建中。如果没有,如果表已经存在,
php-artisan-migrate
将在错误中运行。应该能解决你的问题。它将mysql数据库转换为laravel迁移脚本是的,你说得对,我在询问之前尝试过,但它只适用于laravel 5。laravel似乎没有这个命令,也许你需要自己做。使用
mysqldump-u root-p--no data yourdatabase>schema.sql
读取schema.sql中的每个表,然后将它们转换为migration dir。这样,您就可以创建一个虚拟的laravel 5应用程序来生成迁移,并将它们复制到laravel 6/7应用程序中
if(!Schema::hasTable('TABLE_NAME')) {
    Schema::create('TABLE_NAME', function (Blueprint $table) {
        $table->bigIncrements('id');
        ...
    }
}