使用Artisan::call()运行包迁移


Using Artisan::call() to run package migrations

我需要为我正在编写的一些单元测试迁移我的数据库模式,其中一个迁移包含在一个包中。通常,在命令行中,我会运行以下命令:

php artisan migrate --package=tappleby/laravel-auth-token

为了在代码中运行我自己的迁移,我会这样做:

Artisan::call('migrate');

然而,我似乎无法让Artisan从代码内部运行包迁移。我试过这个:

Artisan::call('migrate --package=tappleby/laravel-auth-token');

但这会导致未知的命令错误。我也试过这些:

Artisan::call('migrate', '--package=tappleby/laravel-auth-token');
Artisan::call('migrate', ['--package=tappleby/laravel-auth-token']);
Artisan::call('migrate', ['package=tappleby/laravel-auth-token']);

以上都不起作用。在我的代码中运行包迁移的正确方式是什么?

我相信正确的语法使用命令参数的关联数组,其中项键是参数的名称,项值是参数的值。这应该适用于您的情况:

Artisan::call('migrate', ['--package' => 'tappleby/laravel-auth-token']);

我用--path:做的

Artisan::call('migrate', ['--path' => 'vendor/systeminc/laravel-admin/src/database/migrations']);