Я работаю над проектом Symfony 4.2 и ищу лучшую практику для сброса базы данных, когда администратору нужно сделать это с помощью кнопки в backoffice.
Объяснение:
Проект представляет собой временное событие веб-сайт.Это означает, что люди будут посещать веб-сайт только в течение дня / недели, а затем веб-сайт будет отключен.Например, веб-сайт для зрителей, выходящих на стадион во время баскетбольного турнира.
По окончании турнира администратор хотел бы сбросить все данные, отправленные во время него, с помощью кнопки.
Прямо сейчасЯ сделал это так, но я не знаю, лучше ли это в производственной среде.
Я создал сервис, который получает KernelInterface в конструкторе:
public function resetDB() {
$application = new Application($this->kernel);
$application->setAutoExit(false);
$input = new ArrayInput([
'command' => 'doctrine:schema:drop',
'--force' => true
]);
$output = new BufferedOutput();
$application->run($input, $output);
$responseDrop = $output->fetch();
if (strpos($responseDrop, 'successfully') !== false) {
$input = new ArrayInput([
'command' => 'doctrine:schema:create',
]);
$application->run($input, $output);
$responseCreate = $output->fetch();
if (strpos($responseCreate, 'successfully') !== false)
return new Response();
}
return new \ErrorException();
}
Во-первых, это так?хорошо это делать в производственных условиях?(Никто другой администратор не будет использовать веб-сайт при выполнении этой операции)
Во-вторых, я не очень удовлетворен методом, который я использовал, чтобы проверить, была ли операция успешно выполнена (strpos($responseCreate, 'successfully') !== false
).Кто-нибудь знает лучший способ?
Большое спасибо за вашу помощь