Мне нужна помощь в полиморфных отношениях Laravel для многих ко многим

В настоящее время я разрабатываю профессиональный сайт для своей организации, в котором у меня есть следующие модели:

  employee
      id
      employee_no
      full_name

   skill
      id
      name

   sector
      id
      name

   field
      id
      name
      sector_id

Отношения следующие: -

  • У сотрудника много навыков, а также у одного или нескольких сотрудников может быть один навык.
  • Сотрудник может работать в разных секторах, а также один или несколько сотрудников могут работать в одном секторе.
  • Сотрудник может работать в разных областях сектора, а также один или несколько сотрудников могут работать в одном поле сектора.

как вы можете видеть отношения многие ко многим между

Сотрудник и навык, Сотрудник и сектор, Сотрудник и поля

поэтому я создал три таблицы для обработки этих отношений, таблицы следующие:

employe_skill
   id
   employee_id
   skill_id

employe_sector
   id
   employee_id
   sector_id

employee_field
   id
   employee_id
   filed_id

Из приведенного выше вы можете увидеть три таблицы, но почти одинаковые. Мне нужна помощь в том, как преобразовать это отношение в полиморфное, где у меня может быть только одна таблица.


person antweny    schedule 23.03.2020    source источник
comment
Вы хотите иметь только одну таблицу типа employee_skill_sector_field? Для меня это плохой дизайн БД.   -  person Felippe Duarte    schedule 23.03.2020
comment
Проблема не в названии табке, а в том, как объединить эти три таблицы, используя полиморфную концепцию.   -  person antweny    schedule 24.03.2020


Ответы (1)


Несмотря на сходство между skill и sector, предлагаемая вами модель с тремя соединяемыми таблицами полностью верна. Если сущности достаточно различаются на концептуальном уровне, разные модели вполне оправданы. Рекомендую создать диаграмму отношения объектов, чтобы точно определить согласованность системы.

здесь показано, как реализовать отношения "многие ко многим" легко в Laravel.

Удачи!

person David S    schedule 24.03.2020
comment
Спасибо за совет! я решил использовать отдельные таблицы на данный момент, чтобы избежать осложнений - person antweny; 26.03.2020