Форма Symfony 3 не сохраняется в базе данных
В настоящее время я создаю форму подписки с Symfony 3, и все работает так, как должно в среде разработки. После того, как я разверну его в производство, все вначале работает нормально - данные помещаются в базу данных, как и для первого подписчика. Однако, когда я закрываю сайт, снова открываю его, заполняю форму и пытаюсь отправить - данные не помещаются в БД. Я не получаю какой-либо конкретной ошибки в то время, похоже, что она пытается отправить ее в базу данных, но затем что-то падает на заднем плане, и я заканчиваю в конце.
Мне кажется, это проблема развертывания, но я не могу понять, какая именно. Я развертывал свое приложение с deployer.org
При развертывании я получал эту ошибку: "Невозможно настроить правильные разрешения для записываемых каталогов. Вам необходимо настроить файлы sudoers sudo таким образом, чтобы они не запрашивали пароль, или настроить правильные разрешения вручную". Я не уделял этому особого внимания, так как мой веб-сайт развернулся, и 1 пользователь веб-сайта просто отлично перешел на БД.
Я использую MySql в качестве базы данных
Любая помощь очень ценится.
1 ответ
Наконец-то понял это. В моей сущности SubscriberDetails у меня был идентификатор, настроенный для автоматической генерации (например, @ORM\GeneratedValue(strategy="AUTO")
) и по причинам, в которых я не уверен, и хотел бы узнать, что это хорошо работает на dev, но совсем не работает на prod. Поэтому решение этой проблемы состояло в том, чтобы удалить автоматическую генерацию с уровня сущности и моделировать ее в контроллере с помощью:
$query = $em ->createQuery('SELECT MAX(s.id) FROM AppBundle:SubscriberDetails s');
$newSubscriber ->setId($query->getSingleScalarResult() + 1);
Это помогло мне