Доктрина 2.0 |Создать базу данных |Являются ли иностранные ключи уникальными - PullRequest
2 голосов
/ 05 июля 2011
  1. Я использую Doctrine 2.0 и последнюю версию MySQL, а также PHP 5.3.5
  2. В настоящее время я использую отображение PHP для создания своей базы данных.

У меня есть модель (Event), которая имеет отношение one2one с другой моделью (EventInvitations) - вероятно, это должно быть one2many, но давайте уйдем от этого.

Мое текущее сопоставление для EventInvitations имеет UniqueConstraint для Eventid и ИД пользователя.
У моего EventInivitation также есть присоединение к событию OneToOne, это внешний ключ

когда я запускаю: "doctrine.php orm: schema-tool: update --force" Doctrine успешно создаст мой уникальный индекс, но также создается впечатление, что он создает другой индекс Uniq, имеющий ключевое имя, например Uniq_AHJHAUSH7J, но в поле EventId.

Проблема в том, что я не хочу, чтобы внешний ключ создавал уникальное поле. Могу ли я сказать Doctrine не создавать индекс Unique для внешнего ключа?

1 Ответ

3 голосов
/ 05 июля 2011

Отношение OneToOne подразумевает уникальность. Это означает, что для данного EventInvitation существует одно событие, и наоборот.

Возможно, вы хотите, чтобы несколько EventInvitations были связаны с одним Event, и в этом случае отношения должны быть ManyToOne (с точки зрения EventInvitation); таким образом, вы сможете иметь внешний ключ для события без уникального индекса.

...