





Вы можете проверить, используется ли консоль с помощью App::runningInConsole() ... этого может быть достаточно в зависимости от того, как вы выполняете миграцию.
Обновлять:
Хорошо, покопавшись еще немного, похоже, вы можете найти нужную информацию, используя следующий пример:
if (app()->runningInConsole()) {
// we are running in the console
$argv = \Request::server('argv', null);
// :$ php artisan migrate:refresh -v
//
// gives:
//
// $argv = array (
// 0 => 'artisan',
// 1 => 'migrate:refresh',
// 2 => '-v',
// )
if ($argv[0] == 'artisan' && \Illuminate\Support\Str::contains($argv[1],'migrate')) {
// we are running the artisan migrate command
}
}
Источник: Как получить текущую консольную команду в Laravel
Я хотел бы отметить, что если вы используете команды Artisan для чего-либо еще, включая встроенный cron Laravel, это применимо и к этому.
@Peter на самом деле недостаточно ... Я не хочу, чтобы он срабатывал при каждой команде мастера ... Только migrate. Есть ли способ получить текущую команду?
Я добавил обновление, которое может предоставить вам необходимую информацию некрасивым, но функциональным способом.
На самом деле, Laravel запускает несколько событий во время выполнения миграции:
Illuminate\Database\Events\MigrationsStarted: скоро будет выполнена партия миграций.
Illuminate\Database\Events\MigrationsEnded: Выполнение пакета миграций завершено.
Illuminate\Database\Events\MigrationStarted : Будет выполнена одиночная миграция.
Illuminate\Database\Events\MigrationEnded : выполнение одной миграции завершено.
Вы можете использовать это, чтобы делать все, что вы хотите. Например:
// change default Log channel when running migrations
Event::listen(function (MigrationsStarted $event) {
config()->set('logging.default', 'migration');
});
В вашем случае вы можете установить ключ в файлах конфигурации вашего приложения, например app.running_migrations, и установить его на true в прослушивателе событий.
Я не вижу ничего встроенного. Возможно, вы могли бы использовать PHP
debug_backtrace, чтобы определить, что в настоящее время используется файл миграции.