$response = Http::get('https://randomuser.me/api/?results=1000');
$users = $response->collect('results')->chunk(100);
$startedAt = Carbon::now();
foreach ($users as $chunk) {
$data = [];
foreach ($chunk as $user) {
$data[] = [
'first_name' => data_get($user, 'name.first'),
'last_name' => data_get($user, 'name.last'),
'email' => data_get($user, 'email'),
'age' => data_get($user, 'dob.age'),
];
}
User::upsert($data, ['first_name', 'last_name'], ['email', 'age']);
}
$added_count = DB::table('users')->whereNull('password')->whereColumn('created_at', '=', 'updated_at')->where('created_at', '>=', $startedAt)->count();
$updated_count = DB::table('users')->whereNull('password')->where('updated_at', '>=', $startedAt)->count();
return [
'total' => DB::table('users')->whereNull('password')->count(),
'added' => $added_count,
'updated' => $updated_count,
];
}
upsert пропускат дубликаты! в API имеются записи с одинаковыми first_name и last_name, и добавляются 2 записи, по идее должна добавиться первая запись из API вторая уже будет обновлять созданную
не асерт пропускает, а неправильное условие)
Обсуждают сегодня