@Kirill-Gorelov
С ума с IT

Обновление php приложения на symfony?

Привет парни.

Самое простое объяснение моей задачи можно описать на примере cms.
Пишу приложение, которое можно скачать, поставить к себе на хостинг и пользоваться.
Это приложение на php фреймворк symfony.

В процессе работы приложения, могут быть выпущены обновления с обновленными таблицами в БД или даже новые таблицы появятся.
И вот у меня загвоздка. В symfony обновление таблицы сущностей происходит консольной командой.
А как можно сделать, чтобы пользователь просто нажал на одну кнопку и подтянулись все остальные изменения и обновилась БД.
Интересует больше как по кнопке изменить заложенную структуру таблицы или добавление новой, без применения консоли?
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 3
Serhioromano
@Serhioromano
Web Developer
Все эти системы миграции это головная боль. Стоит в одном месте произойти сбою, и уже не когда ты не сможешь нормально ни одной миграции запустить.

Я сделал так, при упаковке приложения, я делаю слепок базы в формате JSON. там данные о полях, ключах и отношений. При установке, я делаю такой же слепок с текущей базы, смотрю разницу и автоматически генерю запросы типа ALTER и привожу базу к необходимой форме.
Ответ написан
@Flying
С точки зрения Symfony консольная команда - это просто класс, наследуемый от Symfony\Component\Console\Command\Command. Любая консольная команда - это просто запуск класса Symfony\Bundle\FrameworkBundle\Console\Application, как можно видеть в файле bin/console.

Таким образом ничто не мешает вам "запустить консольную команду" просто создав Console\Application и запустив нужную команду в нём, сформировав правильные входные параметры.

Изменение структуры базы данных зависит от того как именно вы ею управляете. Используете ли Doctrine или что-то ещё? Используете ли Doctrine Migrations или нет? Без этой информации дать точный ответ нельзя. Скорее всего в вашем случае было бы логичнее всего использовать Doctrine Migrations, они ведь именно для этого и созданы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы