我需要为我正在编写的一些单元测试迁移我的数据库模式,其中一个迁移包含在一个包中。通常,从命令行,我将运行此命令:
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']);
以上都不奏效。在我的代码中运行包迁移的正确方法是什么?
答案 0 :(得分:5)
我认为正确的语法对命令参数使用关联数组,其中item键是参数的名称,item值是参数的值。这应该适合你的情况:
Artisan::call('migrate', ['--package' => 'tappleby/laravel-auth-token']);
答案 1 :(得分:0)
我用--path
:
Artisan::call('migrate', ['--path' => 'vendor/systeminc/laravel-admin/src/database/migrations']);