検索時にはtags.normalized_nameを使う
This commit is contained in:
		| @@ -4,20 +4,30 @@ namespace App\Http\Controllers; | |||||||
|  |  | ||||||
| use App\Ejaculation; | use App\Ejaculation; | ||||||
| use App\Tag; | use App\Tag; | ||||||
|  | use App\Utilities\Formatter; | ||||||
| use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||||
| use Illuminate\Support\Facades\Auth; | use Illuminate\Support\Facades\Auth; | ||||||
|  |  | ||||||
| class SearchController extends Controller | class SearchController extends Controller | ||||||
| { | { | ||||||
|  |     /** @var Formatter */ | ||||||
|  |     private $formatter; | ||||||
|  |  | ||||||
|  |     public function __construct(Formatter $formatter) | ||||||
|  |     { | ||||||
|  |         $this->formatter = $formatter; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public function index(Request $request) |     public function index(Request $request) | ||||||
|     { |     { | ||||||
|         $inputs = $request->validate([ |         $inputs = $request->validate([ | ||||||
|             'q' => 'required' |             'q' => 'required' | ||||||
|         ]); |         ]); | ||||||
|  |  | ||||||
|  |         $q = $this->normalizeQuery($inputs['q']); | ||||||
|         $results = Ejaculation::query() |         $results = Ejaculation::query() | ||||||
|             ->whereHas('tags', function ($query) use ($inputs) { |             ->whereHas('tags', function ($query) use ($q) { | ||||||
|                 $query->where('name', 'like', "%{$inputs['q']}%"); |                 $query->where('normalized_name', 'like', "%{$q}%"); | ||||||
|             }) |             }) | ||||||
|             ->whereHas('user', function ($query) { |             ->whereHas('user', function ($query) { | ||||||
|                 $query->where('is_protected', false); |                 $query->where('is_protected', false); | ||||||
| @@ -41,11 +51,17 @@ class SearchController extends Controller | |||||||
|             'q' => 'required' |             'q' => 'required' | ||||||
|         ]); |         ]); | ||||||
|  |  | ||||||
|  |         $q = $this->normalizeQuery($inputs['q']); | ||||||
|         $results = Tag::query() |         $results = Tag::query() | ||||||
|             ->where('name', 'like', "%{$inputs['q']}%") |             ->where('normalized_name', 'like', "%{$q}%") | ||||||
|             ->paginate(50) |             ->paginate(50) | ||||||
|             ->appends($inputs); |             ->appends($inputs); | ||||||
|  |  | ||||||
|         return view('search.relatedTag')->with(compact('inputs', 'results')); |         return view('search.relatedTag')->with(compact('inputs', 'results')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private function normalizeQuery(string $query): string | ||||||
|  |     { | ||||||
|  |         return $this->formatter->normalizeTagName($query); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 shibafu
					shibafu