public function states() { $api = new StateAPI(); foreach (Location::states as $state => $state_name) { $request = $api->state($state)->then(function ($data) use($api) { foreach ($data as $d) { if (!isset($d['state']) || !isset($d['chamber']) || !isset($d['district'])) { continue; } $d = $api->format($d); $division = 'ocd-division/country:us/state:' . $d['state'] . '/sld'; $division .= $d['chamber'] == 'upper' ? 'u' : 'l'; $division .= ':' . $d['district']; echo "division: {$division} \n"; $rep = Representative::firstOrCreate(['division' => $division]); $rep->load($d); $rep->addSource('openstates'); $rep->save(); } }); $request->wait(); } }