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.
JavaScript
x
<?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 🙂
JavaScript
$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
JavaScript
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]);
}
}
} );
}