Laravel 在特定文件夹中创建迁移文件

Laravel create migration file in specific folder

我已经为我的 laravel 项目创建了付款包

我想在我的包的迁移文件夹中制作迁移文件。如何使用 artisan 命令创建它? 我想要

php artisan make:migration packages/Payment/src/Database/add_orderId_to_cart_payment_table

在根文件夹上使用此命令:

创建唯一的迁移文件:

php artisan make:migration create_products_table --create=products

创建迁移,模型文件:

php artisan make:model Product -m

对于创建迁移、模型、控制器文件:

php artisan make:model Product -mcr

如果您想手动执行此操作,则可以根据您的文件夹要求设置 --path

php artisan make:migration filename --path=/app/database/migrations/relations
php artisan make:migration filename --path=/app/database/migrations/translations

如果你想迁移那么:

php artisan migrate --path="/app/database/migrations/relations"

您需要在您的包服务提供商启动方法中像这样将它们从您的包发布到您的迁移文件夹:

  $this->publishes([
        __DIR__.'/Database/migrations/' => database_path('migrations'),
    ], 'migrations');

运行 这个命令 php artisan vendor:publish --tag=migrations

然后你可以 运行 php artisan migrate

对于特定目录:

php artisan make:migration create_users_table --path=/packages/Payment/src/Database

新迁移将放置在您的 packages/Payment/src/Database 目录中。

对于 运行 迁移:php artisan migrate --path=/packages/Payment/src/Database


正在使用内置框架功能生成迁移:

php artisan make:migration create_users_table

新迁移将放置在您的 database/migrations 目录中。

对于 运行 迁移:php artisan migrate

你可以运行:

php artisan make:migration --help 并查看所有可供您使用的选项。

看来你在做一个包裹。它与创建迁移的位置无关,只是以常规方式创建迁移,运行 你的迁移,只需将它们放在你的 package/src/Database/migrations/yourMigrations_xxxxxx.php 和你的包 serivce providerboot() 方法写这一行

$this->loadMigrationsFrom(__DIR__ . '/Database/migrations');

laravel 有一个内置方法 loadMigrationsFrom('path/to/migrations') 来获取迁移,当有人安装这个包时,当他 运行 php artisan migrate 它会 运行 所有迁移,无论它们是在用户的 Database/migrations 中还是在您的包中 package/src/Database/migrations/2022_03_29_23424_create_countries_table_.php,所有迁移都将 运行