2014-10-21 3 views
2

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

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

ответ

5

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

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

Это либо, что либо простой массив аргументов типа 'Artisan :: вызов ('Migrate', [ '- пакет ',' tappleby/laravel-auth-token ']); ' – ceejayoz

0

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

Artisan::call('migrate', ['--path' => 'vendor/systeminc/laravel-admin/src/database/migrations']); 
Смежные вопросы