Newbie 123
Newbie 123

Reputation: 264

why my updateOrInsert doesn't work laravel

I use updateOrInsert to avoid duplicate data, why doesn't the Update function work and always insert data?

foreach($datas as $data){
                    DB::table('users')->updateOrInsert([
                        'user_connect_id' => $user->connect_id,
                        'description' => $data['description'],
                        'created_by' => $login->name,
                        'modified_by' => $login->name,
                        'created_at' => Carbon::now(),
                    ]);
                }

Upvotes: 2

Views: 3559

Answers (3)

TsaiKoga
TsaiKoga

Reputation: 13394

Check out [updateOrInsert] this documentation (https://laravel.com/api/6.x/Illuminate/Database/Query/Builder.html#method_updateOrInsert). You need two parameters. One is the matching attributes (i.e., the attributes you would use to identify your record in case it exists), the other is your array (the new values you wish to insert or update the record with).

updateOrInsert(array $attributes, array $values = []) 

Example

DB::table('users')->updateOrInsert(
    [
        'user_connect_id' => $user->connect_id
    ],
    [
        'user_connect_id' => $user->connect_id,
        'description' => $data['description'],
        'created_by' => $login->name,
        'modified_by' => $login->name,
        'created_at' => Carbon::now(),
    ]);

Upvotes: 5

Md Azizur Rahman
Md Azizur Rahman

Reputation: 375

    // Inseart code
 public function create()
    {
        return view('admin.category.create');
    }
     public function store(Request $request)
        {
            $this->validate($request,[
                'name' => 'required'
            ]);
            $category = new Category();
            $category->name = $request->name;
            $category->slug = str_slug($request->name);
            $category->save();
            Toastr::success('Category Successfully Saved','Success');
            return redirect()->route('admin.category.index');
        }
    // Update code
        public function edit($id)
        {
            $category =Category::find($id);
            return view('admin.category.edit',compact('category'));
        }

       public function update(Request $request, $id)
        {
            $this->validate($request,[
                'name' => 'required|unique:categories'
            ]);
            $category = Category::find($id);
            $category->name = $request->name;
            $category->slug = str_slug($request->name);
            $category->save();
            Toastr::success('Category Successfully Updated','Success');
            return redirect()->route('admin.category.index');
        }

Upvotes: 0

Sohil Chamadia
Sohil Chamadia

Reputation: 426

There are two arguments in updateOrInsert method.The updateOrInsert method accepts two arguments: an array of conditions by which to find the record, and an array of column and value pairs containing the columns to be updated.

For e.g :

DB::table('users')
    ->updateOrInsert(
        ['email' => '[email protected]', 'name' => 'John'],
        ['votes' => '2']
    );

Check this link for syntax : Laravel Doc

Upvotes: 1

Related Questions