Laravel Scout: 글로벌 검색 생성
전역 검색을 만들면 가능한지 질문을 받았습니다. 예 가능합니다. 우리는 프로그래머입니다. 우리는 사물이 어떻게 행동하고 행동해야 하는지 프로그램합니다.
경로와 도우미를 약간 변경하면 완료됩니다!
TLDR;
경로:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/search', function (Request $request) {
abort_if(
empty($request->search),
404,
'Please provide search keyword'
);
return search($request);
});
그리고 도우미:
<?php
use App\Enums\SearchType;
use Illuminate\Http\Request;
use Laravel\Scout\Searchable;
if (! function_exists('search')) {
function search(Request $request = null)
{
if(is_null($request)) {
$request = request();
}
$type = SearchType::tryFrom($request->type);
$keyword = $request->search;
$paginate = $request->query('paginate', false);
$types = empty($type) ? SearchType::cases() : [$type];
$data = [];
foreach ($types as $type) {
throw_if(
! in_array(Searchable::class, class_uses_recursive($type->value))
);
$class = $type->value;
$query = $class::search($keyword);
$data[$type->label] = $paginate
? $query->paginate()
: $query->first();
}
return [
'data' => $data,
'meta' => [
'searched_at' => date('Y-m-d H:i:s')
],
];
}
}
또한 열거형을 업데이트하고
labels()
덮어쓰기를 제거합니다.<?php
namespace App\Enums;
use Spatie\Enum\Laravel\Enum;
/**
* @method static self user()
* @method static self profile()
*/
class SearchType extends Enum
{
public static function values(): array
{
return [
'user' => \App\Models\User::class,
'profile' => \Profile\Models\Profile::class,
];
}
}
이제 끝났습니다! 전역 검색이 실행 중입니다.
Reference
이 문제에 관하여(Laravel Scout: 글로벌 검색 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nasrulhazim/laravel-scout-create-a-global-search-312l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)