I am building a internal crm which has contacts which are just people with first name, last name, email, phone etc. Contacts can be one or more types e.t.c. job candidates, hiring managers, customers, workers, sub-contractors etc... and based on the types there are more fields specific fields.
I am building the software in laravel using eloquent orm and my first thought is to have a contacts table/object which stores the common fields and then a has-one to the other types, each which contain the specific fields to those types. Otherwise I can just store all of the fields as nullables in the one contact table is is_candidate, is_worker etc.
Any recommendations on an approach that has worked well for your use case?