public function transform($xml) { $setlist = new Setlist(); $setlist->id = (string) $xml->attributes()->id; $setlist->eventDate = Carbon::parse($xml->attributes()->eventDate); $setlist->artist()->associate($this->transformArtist($xml->artist)); $setlist->tour = (string) $xml->attributes()->tour; $setlist->venue()->associate($this->transformVenue($xml->venue)); $sets = $this->transformSets($xml->sets->set); foreach ($sets as $set) { $setlist->sets()->associate($set); } if ($xml->info) { $setlist->info = (string) $xml->info; } return $setlist; }
private function all() { $overwrite = $this->option('o'); if ($overwrite) { Setlist::truncate(['Setlist.id' => '!= ""']); } $continue = true; $p = 1; $inserted = 0; $setlistsPerPage = 20; while ($continue) { $xml = simplexml_load_file(Config::get('app.setlistfm_api_baseurl') . 'user/' . env('SETLISTFM_USER') . '/attended.xml?p=' . $p); $xmlChildren = $xml->children(); $xmlChildrenCount = count($xmlChildren); if ($xmlChildrenCount < $setlistsPerPage) { $continue = false; } foreach ($xmlChildren as $xmlChild) { $id = (string) $xmlChild->attributes()->id; if (!$overwrite) { $inDb = Setlist::where('id', $id)->first(); if ($inDb) { continue; } } $transformer = new SetlistTransformer(); $setlist = $transformer->transform($xmlChild); $setlist->save(); $inserted++; $this->showInfo($setlist); } $p++; } if ($inserted == 0) { $this->info('No setlists pending.'); } }
public function getSearch($query) { $items = Setlist::search($query)->orderByDate()->paginate(20); return view('setlists/search', ['results' => $items]); }