validate([ 'type' => ['required', 'in:stock,etf,fund'], 'keyword' => ['required', 'string', 'min:1'], ]); $results = Security::query() ->where('type', $validated['type']) ->where(function ($query) use ($validated) { $query->where('code', 'ilike', "%{$validated['keyword']}%") ->orWhere('name', 'ilike', "%{$validated['keyword']}%"); }) ->orderBy('code') ->limit(10) ->get(['code', 'name']); if ($results->isEmpty()) { if ($validated['type'] === 'fund') { $res = Http::post("https://www.anuefund.com/anuefundApi/Search/Light", [ 'keyword' => $validated['keyword'], ]); if ($res->ok()) { $data = $res->json(); foreach ($data['data']['result'] as $item) { $results->push(new Security([ 'code' => $item['fundID'], 'name' => $item['fundName'], ])); } } } } return response()->json($results); } }