0

Hi I've search and try to solve the issue but failed to grab solution sorry for taking your time. I am inserting a set of data in laravel with the query builder to insert multiple data at a time.

DB::table('table')->insert(
array(
    array(
        'col1' => 'data1',
        'col2' => 'data1'
    ),
    array(
        'col1' => 'data2', 
        'col2' => 'data2'
    ),
)
);

Is there any way to check if exist the col1,col2 value in table if exist then update otherwise insert. I wanted to get return true or false from the query result if all data successfully update or inserted. I wanted to solve it with laravel query builder. Thanks

1 Answer 1

1

As far as I know, the Laravel query builder does not support this. You could do a raw MySQL query:

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

But that is very messy and MySQL specific.

Instead i would suggest you use the Eloquent ORM:

// Retrieve the flight by the attributes, or create it if it doesn't exist...
$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);

http://laravel.com/docs/5.1/eloquent#inserting-and-updating-models

Sign up to request clarification or add additional context in comments.

2 Comments

first or create doesn't taking much keys and values I've try it
Yes you need to loop your data, because it will try to get or create one model at a time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.