The insertOrIgnore function will ignore duplicates - but you are not passing in sufficient information for it to determine that there is a duplicate - you are not including the id of the existing record.
I would suggest querying for the item first (based on the input data) then you can use UpdateOrCreate, including the Id. An example here:
how-to-use-the-query-builder-updateorinsert-method[
^]
As Member 15627495 says - a phone number can change so it is not a good candidate for a Primary key. The rest of their comment is not correct however.