Laravel 5.1 Create or Update on Duplicate

In Laravel 5.1, for mySql insert, I want to see if the record already exists and update on duplicate or create new if none exists.

I have already searched SO where the answers were for old laravel versions. In one of the old topics it said that a new updateOrCreate() method was added in core last year. But when I try that, I am getting the error:

Integrity constraint violation: 1062 Duplicate entry '1' for key 'app_id' 

This is the query I use:

                            'app_id'          =>  $postData['appId'],
                            'contact_email'    =>  $postData['contactEmail']

Where app_id is the unique foreign key in that table and I want to update the rocord if exists or create a new one. I have tried searching the 5.1 docs and couldnt find the info I need. Can someone guide me here please…

Source: laravel

1 Comment

  1. Edwin

    As per the Definition of the Eloquent Model Method “updateOrCreate()”

    function updateOrCreate(array $attributes, array $values = []){}

    it takes two argument … is the attributes using which you want to check in database if the record is present
    2.second is the new attribute values that you want to create or update

    AppInfo::updateOrCreate(['app_id' => $postData['appId']],
                            ['contact_email' => $postData['contactEmail']]);

Leave a Reply