I'm trying to wrap my head around this, my logic below seems to work perfectly fine, but the only doubt if is this approach right, perhaps there is a better approach for such relations.
I have 6 tables.
notes -id -body
calls -id -summary
-companies -id -name
contacts -id -first_name -last_name
model_has_companies -company_id -model_type -model_id
model_has_contacts -contact_id -model_type -model_id
This is how all this is supposed to work:
Currently, this is how I perform this logic.
Company is created.
Contact is created and attached to the company
model_has_contacts (contact_id, App\Company, company_id)
callstable then attach the call to companies relationship
model_has_companies(company_id, App\Call, call_id)
notestable then attach the note to contacts and companies relationship.
model_has_contacts (contact_id, App\Note, note_id) model_has_companies (company_id, App\Note, note_id)
Note that in this example, the note is attached to the contact and to the company too.
Few questions that will help me to finalize this.
A contact can have many companies and company can have many contacts, but I use only the
model_has_contacts table because that's how I defined the morphedByMany relation, is this fine?
So in this case, the
model_has_companies table is used to attach other data like calls and notes to the company.
Any feedback or suggestion for a better approach will be appreciated.