商品分类自动完成

This commit is contained in:
TL 2022-07-12 21:09:40 +08:00
parent 290f85b4a3
commit aa9871f1d9
5 changed files with 53 additions and 0 deletions

View File

@ -60,5 +60,24 @@ class CategoryRepo
{
}
public static function autocomplete($name)
{
$categories = Category::query()->with('description')
->whereHas('description', function ($query) use ($name) {
$query->where('name', 'like', "{$name}%");
})->limit(10)->get();
$results = [];
foreach ($categories as $category) {
$results[] = [
'id' => $category->id,
'name' => $category->description->name,
'image' => $category->image,
];
}
return $results;
}
}

View File

@ -91,4 +91,21 @@ class ProductRepo
{
return self::getBuilder($data)->paginate($data['per_page'] ?? 20);
}
public static function autocomplete($name)
{
$products = Product::query()->with('description')
->whereHas('description', function ($query) use ($name) {
$query->where('name', 'like', "{$name}%");
})->limit(10)->get();
$results = [];
foreach ($products as $product) {
$results[] = [
'id' => $product->id,
'name' => $product->description->name,
'image' => $product->image,
];
}
return $results;
}
}

View File

@ -26,4 +26,11 @@ class CategoryController extends Controller
return view('category', $data);
}
public function autocomplete(Request $request)
{
$categories = CategoryRepo::autocomplete($request->get('name') ?? '');
return json_success('获取成功!', $categories);
}
}

View File

@ -18,4 +18,11 @@ class ProductController extends Controller
return view('product', $data);
}
public function autocomplete(Request $request)
{
$products = ProductRepo::autocomplete($request->get('name') ?? '');
return json_success('获取成功!', $products);
}
}

View File

@ -31,11 +31,14 @@ Route::prefix('/')
Route::post('carts/select', [CartController::class, 'select'])->name('carts.select');
Route::delete('carts/{cart}', [CartController::class, 'destroy'])->name('carts.destroy');
Route::get('categories/autocomplete', [CategoryController::class, 'autocomplete'])->name('categories.autocomplete');
Route::get('categories', [CategoryController::class, 'index'])->name('categories.index');
Route::get('categories/{category}', [CategoryController::class, 'show'])->name('categories.show');
Route::get('products/autocomplete', [ProductController::class, 'autocomplete'])->name('products.autocomplete');
Route::get('products/{product}', [ProductController::class, 'show'])->name('products.show');
Route::get('login', [LoginController::class, 'index'])->name('login.index');
Route::post('login', [LoginController::class, 'store'])->name('login.store');
Route::get('register', [RegisterController::class, 'index'])->name('register.index');