public function get($zip = null, $ken_furi = null, $city_furi = null, $town_furi = null) { $addr = new Models\Address(); /** @var \Illuminate\Database\Query\Builder $q */ $q = $addr->newQuery(); $decoded_zip = Models\Address::processZip($zip); $q->orWhere('zip', '=', $decoded_zip); foreach (['ken_furi', 'city_furi', 'town_furi'] as $col) { Models\Address::filterQueryFuri(${$col}, $q, $col); } /** @var \Illuminate\Database\Eloquent\Collection|static[] $results */ $columns = ['ken_id', 'zip', 'ken_name', 'ken_furi', 'city_name', 'city_furi', 'town_name', 'town_furi', 'kyoto_street', 'block_name', 'office_name', 'office_address']; $results = $q->take(10)->get($columns); // NULLのフィールドを省略 $resultsArray = array_map(function ($result) use($columns) { foreach ($columns as $col) { if (array_key_exists($col, $result) && ($result[$col] === 'NULL' || trim(mb_convert_kana($result[$col], 's')) === '')) { unset($result[$col]); } } return $result; }, $results->toArray()); $date = date('Y/m/d H:i:s'); return $results->count() > 0 ? response()->json(['error' => 'success', 'date' => $date, 'count' => $results->count(), 'results' => $resultsArray]) : response()->json(['error' => 'error', 'date' => $date, 'count' => 0]); }
public function searchResult() { $searchWord = Input::get('search', ''); $maxCount = (int) Input::get('max_count', 100); $addr = new Models\Address(); /** @var \Illuminate\Database\Query\Builder $q */ $q = $addr->newQuery(); $decoded_searchWord = Models\Address::processZip($searchWord); $q->orWhere('zip', '=', $decoded_searchWord); foreach (['ken_furi', 'city_furi', 'town_furi'] as $col) { Models\Address::filterQueryFuri($searchWord, $q, $col); } foreach (['ken_name', 'city_name', 'town_name', 'kyoto_street', 'block_name'] as $col) { Models\Address::filterQueryKanji($searchWord, $q, $col); } /** @var \Illuminate\Database\Eloquent\Collection|static[] $results */ $results = $q->take($maxCount)->get(['ken_id', 'zip', 'ken_name', 'ken_furi', 'city_name', 'city_furi', 'town_name', 'town_furi', 'kyoto_street', 'block_name', 'office_name', 'office_address']); $resultCount = count($results); return view('index', ['results' => $results, 'count' => $resultCount, 'searchWord' => $searchWord, 'maxCount' => $maxCount]); }