我需要为我正在编写的一些单元测试迁移我的数据库模式,其中一个迁移包含在一个包中。通常,在命令行中,我会运行以下命令:
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']);