Как реализовать такую архитектуру на Eloquent laravel?
Подписался на вопрос, но точно скажу что:
1. null'и ненужные поля, они не занимают много места. Будет хлам в таблице, но если в коде разбить одну таблицу на несколько моделек - будет уже лучше и спокойней.
2. json - не очень вариант, только если как-то это абстрагируешь и будешь все из json'а пихать назад в аттрибуты, что бы с этим было удобно работать в коде. Но это тоже так себе вариант.
3. если использовать uuid и морф связи без foreign ключей - да, как вариант
4. не создавать профили кому не нужно и все)
5. нет, хрень. Даже хуже чем второй вариант.
В этом конкретном случае я бы выбирал между вариантами 1 и 3, ибо привязывать примитивку "специализация" к какому-то отдельному энтити - такое себе удовольствие. 1-ый не такой плохой как кажется, а с третим теоретически сложнее работать, хотя это неплохая идея.
я склоняюсь к варианту 4.
а как организовать связь варианты:
1)
user.doc_profile_id -> doc_profile.id
user.pat_profile_id -> pat_profile.id
2)
user.type=doc user.profile_id -> doc_profile.id
user.type=pat user.profile_id -> pat_profile.id
3) 
doc_profile.user_id -> user.id
pat_profile.user_id -> user.id