2011-02-03 3 views
0

В настоящее время я использую генератор admin symfony для управления базой данных. База данных уже создана и используется, и одна из вещей, которую она выполняет по-другому, чем то, что делает обычная база данных symfony, использует varchar как первичный ключ, а не метод symfony для использования int для всех первичных ключей.Обновить идентификатор модели в symfony

Проблема, с которой я сталкиваюсь, заключается в возможности редактировать и обновлять этот первичный ключ в форме. Проблема в том, что когда я пытаюсь редактировать ключ, форма выдает ошибку и говорит «Invalid». Ошибка, я могу предположить, исходит из того, что новый ПК не соответствует старому. Я полагаю, что у меня есть следующие варианты:

  1. Удалите старую модель, создайте новую и сохраните ее.

  2. Не разрешайте им редактировать идентификатор. Им нужно будет удалить модель и воссоздать ее.

  3. Не разрешайте им создавать или редактировать идентификатор и вместо этого вызывать его из атрибута.

  4. Измените архитектуру базы данных так, чтобы модель имела значение auto-increment integer PK. Затем используйте уникальный показатель varchar для предыдущего PK.

Теперь, когда я думаю об этом, число 3 было бы идеально, так как модель в поле «Name», который легко может иметь идентификатор, выведенный из него. Однако это все равно вызовет проблему в 1, когда они обновят имя.

Мне не нравится вариант 2 вообще, и я думаю, что я бы предпочел номер 4. Я полагаю, что 4 - самый простой способ, и это можно сделать, но я хотел бы хотя бы знать, может ли быть выполнено число 1 для дальнейшего использования.

+0

Почему у вас есть редактируемые ПК? Какую информацию (то есть редактируемую пользователем) они хранят? – Jan

+0

Эта модель в данном случае является категорией. ПК - это короткая описательная пуля. Например, категорию можно назвать «Спорт и отдых», однако ПК будет чем-то вроде «спорта». Он используется для предотвращения дублирования категорий. – AndrewKS

+4

Если это вариант, возможно, лучше использовать целочисленный столбец первичного ключа и добавить уникальное ограничение для категорий, если есть вероятность, что дубликаты могут возникнуть. – Tom

ответ

0

Основываясь на вашем ответе на комментарий, я бы реорганизовал базу данных. Я бы создал целочисленное число auto_increment PK и создал уникальный индекс в столбце slug.

Смежные вопросы