0

У меня проблема с отношениями с базой данных, чем сама доктрина. У меня есть таблица «проект» и таблица «project_data». Моя таблица «project_data» ВСЕГДА связана с записью проекта. Однако в моей таблице «project» у меня есть две ссылки на запись project_data: project_data_id и project_data_waiting_id. Однако эти ссылки могут быть нулевыми и не иметь никакого отношения к «project_id», установленному в таблице project_data.Доктрина 2: множественные отношения между двумя таблицами

Вопрос:

  • Как определить все эти отношения? Я хочу иметь проектные записи без ссылок на project_data.

  • Как с ним обращаться с Доктриной? Я вроде как новый с Doctrine и с дизайном базы данных, и я немного потерял между всеми объединениями, которые мне нужно делать между моими таблицами.

Я присоединяюсь к вам, чтобы получить лучшее представление о том, что я хочу делать.

спасибо.

EER Diagram

ответ

1

В этом случае я дам вам два варианта (предполагается, что project_data всегда имеет только один project):

Первая:

project 
- id 
- project_data_id 
- project_data_waiting_id 

project_data 
- id 
- name 

В этом случае вы можете определить два индивидуальные отношения с вашим классом проекта. Посмотрите на http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#one-to-one-bidirectional для получения дополнительной информации, как справиться с этим.

Второй: вариант:

Также можно создать много-ко-многим и дать project_data статус. Это будет выглядеть следующим образом:

project 
- id 

project_data 
- id 
- name 
- project_id 
- status_id 

project_data_status 
- id 
- name 

В этом случае project будет иметь отношение многие-к-одному с project_data и project_data будет иметь отношение один-ко-многим с project_data_status. Это решение дает вам большую гибкость. Вы можете добавить столько project_data объектов в project как хотите.

Как определить отношения в доктрине2 можно найти на той же странице, которую я уже представил в этом посте.

Надеюсь, это укажет вам в правильном направлении.

+0

Благодарим вас за ответ. Тем не менее, для варианта 1), ли мы теряем отношение проекта к таблице project_data «X», если я задал еще один проект_данных «Y» и «Z» в качестве значений в свойствах проекта «project_data_id» и «project_data_waiting_id»? Потому что я хочу сохранить тот факт, что project_data был создан для одного конкретного проекта, даже если этот файл project_data больше не используется в таблице проекта – MeuhMeuh

+0

И для варианта 2): Это действительно интересный подход, однако я на самом деле проектируя это, чтобы создать своего рода «ревизионную» систему для записей project_data. В каждом проекте может быть «фактический» файл project_data, другой, который ожидает утверждения.Но я не хочу потерять историю других предыдущих записей project_data, которые не были бы в двух случаях. С этой конструкцией было бы трудно получить текущую информацию о проекте «ожидающий» для утверждения и текущий, который будет принят? – MeuhMeuh

+0

Вариант 1: Да, вы потеряете его. Если вы хотите отслеживать это, вы должны перейти на второй вариант и добавить статус истории или что-то в этом роде. Вариант 2: вы можете просто создать запрос, чтобы получить project_data с определенным статусом, принадлежащим этому проекту. –

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