I currently have a polymorphic relationship between phone numbers and contacts or organizations. I am using a morphMap to change the name of the parent relationship namespaced model to either contact or organization respectively.
Currently when I want to create a new phone number for an organization or contact I pass two URL parameters, parent_id=$record_id and parent_type=contact or organization. Then in my phone number controller I have the following which is super ugly:
if ($request->parent_type == 'organization')
{
$parent_record = Organization::find($request->parent_id);
}
elseif ($request->parent_type == 'contact')
{
$parent_record = Contact::find($request->parent_id);
}
if ($parent_record)
{
$parent_record->phone_numbers()->save($phone_number);
return redirect()->route($request->parent_type . '.show', ['id' => $request->parent_id])->with('notify', 'Phone number added!');
}
I know that there has to be a better way for doing this since on every create or store method I duplicate this code. I just don't know how to make this better.