検索時にはtags.normalized_nameを使う

This commit is contained in:
shibafu 2020-07-30 23:12:29 +09:00
parent d18f245129
commit 561c9d028d

View File

@ -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);
}
} }