public function index() { $datums = Venue::selectRaw('name AS value')->addSelect('id', 'address_id', 'name_of_hall', 'indoor_or_outdoor'); if (Input::get('q')) { $queryTokens = explode(' ', Input::get('q')); foreach ($queryTokens as $queryToken) { $datums = $datums->where(function ($query) use($queryToken) { $query->where('name', 'like', '%' . $queryToken . '%')->orWhere('name_of_hall', 'like', '%' . $queryToken . '%'); }); } } $datums = $datums->distinct()->take(50)->get(); foreach ($datums as $datum) { $datum->tokens = array_merge(explode(' ', $datum->value), [$datum->value]); $address = $datum->address()->first(); if ($address) { $datum->email = $address->email; $country = $address->country()->first(); $datum->country = $country->name; } } return Response::json($datums); }