Мне нужно перенести мою схему базы данных для некоторых модульных тестов, которые я пишу, и одна из этих миграций включена в пакет. Обычно из командной строки я запускаю эту команду:
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']);