Использование Artisan :: call () для запуска миграции пакетов

Мне нужно перенести мою схему базы данных для некоторых модульных тестов, которые я пишу, и одна из этих миграций включена в пакет. Обычно из командной строки я запускаю эту команду:

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']);

Ничто из вышеперечисленного не работает. Как правильно выполнить миграцию пакетов в моем коде?

2

Решение

Я считаю, что правильный синтаксис использует ассоциативный массив для параметров команды, где ключ элемента — это имя параметра, а значение элемента — это значение параметра. Это должно работать в вашем случае:

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

Другие решения

Я сделал это с --path:

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