Skip to content
Advertisement

Checking duplicated data in Laravel

This code work as send to inn_db table from ext_db.

but it cannot check if the data is the same or different in inn_db.

So there posited same values in inn_db.

How could I add that job?.

Laravel-5.4, MySQL, InnoDB.

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use DB;

class UpdateCustomerController extends Controller
{
    public function db_update()
    {
        $customers = DB::connection('ext_db')->table('customers')->orderBy('customer_id')->chunk(1000, function ($all){
            foreach ($all as $kunde){
                DB::connection('inn_db')->table('custoemrs')->insert(
                    [$kunde->customer_id
                     $kunde->name,
                     $kunde->email]);
            }
        });
    }
}

Finally, I got the answer as below code with connect view when after discussion.

Thanks to @Pramid and @Badea 🙂

    $customers = DB::connection('ext_db')->table('customers')->orderBy('customer_id')->chunk(1000, function ($all){
        foreach ($all as $kunde){
            $existing_kunde = DB::connection('inn_db')->table('customers')->where([
                    ['customer_id', '=', $kunde->customer_id], 
                    ['name', '=',  $kunde->name], 
                    ['email', '=', $kunde->email]
            ])->first();

            if ( ! $existing_kunde) {
                DB::connection('inn_db')->table('customers')->insert([
                    'customer_id' => $kunde->customer_id, 
                    'name', => $kunde->name, 
                    'email', => $kunde->email
                ]);
           }
        }
    });
    $kundes = DB::connection('ext_db')->table('customers')->get();
    return view('kundes.index')
        ->with('kundes', $kundes);

Advertisement

Answer

Give this a try, you basically need to check each record of the chunk in your customer table if it doesn’t exist then allow them to get insert into customer table

public function db_update()
    {
        $customers = DB::connection( 'ext_db' )->table( 'customers' )->orderBy( 'customer_id' )->chunk( 1000, function ( $all ) {
            foreach ( $all as $kunde ) {
                $kunde_exist = DB::connection( 'inn_db' )->table( 'customers' )
                                 ->where( [
                                     'customer_id' => $kunde->customer_id,
                                     'name'        => $kunde->name,
                                     'email'       => $kunde->email,
                                 ] )->first();
                if ( ! $kunde_exists ) {
                    DB::connection( 'inn_db' )->table( 'customers' )->insert(
                        [ $kunde->customer_id
                             $kunde->name,
                             $kunde->email]);
                  }
            }
        } );
    }
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement