Laravel Syncronisasi Data Antara 2 Tabel (Looping)

 Langkah-langkah dalam syncronisasi data antara 2 Tabel

  • Select ke table A (beda koneksi)
        $data = DB::connection('pgsql3')->select("SELECT * from karyawan");
  • Delete tabel temp
        $karyawan = Karyawan_YOHR_temp::all();
        $karyawan->each->delete();
  • Simpan ke tabel temp di looping dan di masukan ke array
        foreach($data as $val) {
            // echo 'data yohr-'.$val->username.PHP_EOL;
            $array[] = [    
                'username' => $val->username
            ];
        }
        Karyawan_YOHR_temp::insert($array);
  • Select ke tabel temp
        $data2 = DB::select("SELECT * from karyawan_yohr_temp");
  • Looping dan lakukan pengecekan ke tabel B Jika ada di Update Sedangkan jika tidak ada di Insert
         foreach($data2 as $val) {
            $count = DB::table('karyawan')
                        ->where('username',$val->username)
                        ->count();
            if($count == 0) {
                // echo $val->username.'-insert'.PHP_EOL;
                $array2 = [   
                    'username' => $val->username
                ];
                Karyawan::insert($array2);

            } else {
                // echo $val->username.'-update'.PHP_EOL;
                DB::table('karyawan')
                ->where('username', $val->username)
                ->update([  
                    'employee_name' => $val->employee_name       
                ]);
            }
        }
  • Left join untuk mendapatkan data di tabel B yang tidak ada di tabel A
        $data3 = DB::table('karyawan')
                    ->select('karyawan.*')
                    ->leftjoin('karyawan_yohr_temp', 'karyawan.username', 'karyawan_yohr_temp.username')
                    ->where('karyawan_yohr_temp.id', null)
                    ->get();

 

Kesimpulan :

Pada Proses ini dilakukan looping tabel A dan pengecekan ke tabel B, hasil pengecekan akan dilakukan Update jika ada dan Insert Jika belum ada, sedangkan untuk mengecek tabel B yang tidak ada di tabel A dilakukan left join

Kekurangan jika proses ini jika dilakukan akan terkena RTO jika data sangat banyak.

Komentar

Postingan Populer