input('keys'); if (empty($keys)) { return response()->json([]); } $addresses = AdAddress::with([ 'ads' => function ($query) { $query->showable()->latest('sort'); }, ])->showable()->whereIn('key', $keys)->get(); $mapAddresses = $addresses->mapWithKeys(function ($item) use ($request) { return [ $item->key => AdResource::collection($item->ads)->resolve($request), ]; }); foreach ($keys as $key) { if (! $mapAddresses->has($key)) { $mapAddresses->put($key, []); } } return response()->json($mapAddresses); } }