В настоящее время я использую генератор admin symfony для управления базой данных. База данных уже создана и используется, и одна из вещей, которую она выполняет по-другому, чем то, что делает обычная база данных symfony, использует varchar как первичный ключ, а не метод symfony для использования int для всех первичных ключей.Обновить идентификатор модели в symfony
Проблема, с которой я сталкиваюсь, заключается в возможности редактировать и обновлять этот первичный ключ в форме. Проблема в том, что когда я пытаюсь редактировать ключ, форма выдает ошибку и говорит «Invalid». Ошибка, я могу предположить, исходит из того, что новый ПК не соответствует старому. Я полагаю, что у меня есть следующие варианты:
Удалите старую модель, создайте новую и сохраните ее.
Не разрешайте им редактировать идентификатор. Им нужно будет удалить модель и воссоздать ее.
Не разрешайте им создавать или редактировать идентификатор и вместо этого вызывать его из атрибута.
Измените архитектуру базы данных так, чтобы модель имела значение auto-increment integer PK. Затем используйте уникальный показатель varchar для предыдущего PK.
Теперь, когда я думаю об этом, число 3 было бы идеально, так как модель в поле «Name», который легко может иметь идентификатор, выведенный из него. Однако это все равно вызовет проблему в 1, когда они обновят имя.
Мне не нравится вариант 2 вообще, и я думаю, что я бы предпочел номер 4. Я полагаю, что 4 - самый простой способ, и это можно сделать, но я хотел бы хотя бы знать, может ли быть выполнено число 1 для дальнейшего использования.
Почему у вас есть редактируемые ПК? Какую информацию (то есть редактируемую пользователем) они хранят? – Jan
Эта модель в данном случае является категорией. ПК - это короткая описательная пуля. Например, категорию можно назвать «Спорт и отдых», однако ПК будет чем-то вроде «спорта». Он используется для предотвращения дублирования категорий. – AndrewKS
Если это вариант, возможно, лучше использовать целочисленный столбец первичного ключа и добавить уникальное ограничение для категорий, если есть вероятность, что дубликаты могут возникнуть. – Tom