fixed search product

This commit is contained in:
Edward Yang 2022-08-12 17:32:37 +08:00
parent a6801ef182
commit 9d7ff6e116
7 changed files with 36 additions and 17 deletions

View File

@ -13,7 +13,7 @@ namespace Beike\Repositories;
use Beike\Models\Product; use Beike\Models\Product;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Beike\Shop\Http\Resources\ProductList; use Beike\Shop\Http\Resources\ProductSimple;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\HigherOrderBuilderProxy; use Illuminate\Database\Eloquent\HigherOrderBuilderProxy;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection; use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
@ -43,8 +43,7 @@ class ProductRepo
{ {
$builder = self::getBuilder(['category_id' => $categoryId]); $builder = self::getBuilder(['category_id' => $categoryId]);
$products = $builder->with('inCurrentWishlist')->get(); $products = $builder->with('inCurrentWishlist')->get();
$items = ProductList::collection($products); return ProductSimple::collection($products);
return $items;
} }
@ -57,7 +56,7 @@ class ProductRepo
{ {
$builder = self::getBuilder(['product_ids' => $productIds])->whereHas('master_sku'); $builder = self::getBuilder(['product_ids' => $productIds])->whereHas('master_sku');
$products = $builder->with('inCurrentWishlist')->get(); $products = $builder->with('inCurrentWishlist')->get();
return ProductList::collection($products); return ProductSimple::collection($products);
} }

View File

@ -2,9 +2,9 @@
namespace Beike\Shop\Http\Controllers; namespace Beike\Shop\Http\Controllers;
use Beike\Repositories\BrandRepo;
use Beike\Shop\Http\Resources\ProductList;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Beike\Repositories\BrandRepo;
use Beike\Shop\Http\Resources\ProductSimple;
class BrandController extends Controller class BrandController extends Controller
{ {
@ -23,7 +23,7 @@ class BrandController extends Controller
$products = BrandRepo::find($id)->products()->with('inCurrentWishlist')->paginate(20); $products = BrandRepo::find($id)->products()->with('inCurrentWishlist')->paginate(20);
$data = [ $data = [
'products' => ProductList::collection($products)->jsonSerialize(), 'products' => ProductSimple::collection($products)->jsonSerialize(),
]; ];
return view('brand/info', $data); return view('brand/info', $data);

View File

@ -3,10 +3,9 @@
namespace Beike\Shop\Http\Controllers; namespace Beike\Shop\Http\Controllers;
use Beike\Models\Category; use Beike\Models\Category;
use Beike\Repositories\CategoryRepo;
use Beike\Repositories\ProductRepo;
use Beike\Shop\Http\Resources\ProductList;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Beike\Repositories\ProductRepo;
use Beike\Repositories\CategoryRepo;
class CategoryController extends Controller class CategoryController extends Controller
{ {

View File

@ -3,20 +3,40 @@
namespace Beike\Shop\Http\Controllers; namespace Beike\Shop\Http\Controllers;
use Beike\Models\Product; use Beike\Models\Product;
use Beike\Shop\Http\Resources\ProductSimple;
use Illuminate\Http\Request;
use Beike\Repositories\ProductRepo; use Beike\Repositories\ProductRepo;
use Beike\Shop\Http\Resources\ProductDetail; use Beike\Shop\Http\Resources\ProductDetail;
use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
class ProductController extends Controller class ProductController extends Controller
{ {
/**
* 产品详情页
* @param Request $request
* @param Product $product
* @return mixed
*/
public function show(Request $request, Product $product) public function show(Request $request, Product $product)
{ {
$product = ProductRepo::getProductDetail($product); $product = ProductRepo::getProductDetail($product);
$data = [ $data = [
'product' => (new ProductDetail($product))->jsonSerialize(), 'product' => (new ProductDetail($product))->jsonSerialize(),
]; ];
return view('product', $data); return view('product', $data);
} }
/**
* 通过关键字搜索产品
*
* @param Request $request
* @return AnonymousResourceCollection
*/
public function search(Request $request): AnonymousResourceCollection
{
$keyword = $request->get('keyword');
$products = ProductRepo::getBuilder(['name' => $keyword])->where('active', true)->paginate();
return ProductSimple::collection($products);
}
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* ProductList.php * ProductSimple.php
* *
* @copyright 2022 opencart.cn - All Rights Reserved * @copyright 2022 opencart.cn - All Rights Reserved
* @link http://www.guangdawangluo.com * @link http://www.guangdawangluo.com
@ -14,7 +14,7 @@ namespace Beike\Shop\Http\Resources;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductList extends JsonResource class ProductSimple extends JsonResource
{ {
/** /**
* 图片列表页Item * 图片列表页Item

View File

@ -61,6 +61,7 @@ Route::prefix('/')
Route::get('pages/{page}', [PageController::class, 'show'])->name('pages.show'); Route::get('pages/{page}', [PageController::class, 'show'])->name('pages.show');
Route::get('products/search', [ProductController::class, 'search'])->name('products.search');
Route::get('products/{product}', [ProductController::class, 'show'])->name('products.show'); Route::get('products/{product}', [ProductController::class, 'show'])->name('products.show');
Route::get('register', [RegisterController::class, 'index'])->name('register.index'); Route::get('register', [RegisterController::class, 'index'])->name('register.index');

View File

@ -12,8 +12,8 @@
namespace Plugin\LatestProducts\Controllers; namespace Plugin\LatestProducts\Controllers;
use Beike\Repositories\ProductRepo; use Beike\Repositories\ProductRepo;
use Beike\Shop\Http\Resources\ProductList;
use Beike\Shop\Http\Controllers\Controller; use Beike\Shop\Http\Controllers\Controller;
use Beike\Shop\Http\Resources\ProductSimple;
class MenusController extends Controller class MenusController extends Controller
{ {
@ -31,7 +31,7 @@ class MenusController extends Controller
$products = ProductRepo::getBuilder()->whereHas('master_sku')->with('inCurrentWishlist')->orderByDesc('updated_at')->paginate(40); $products = ProductRepo::getBuilder()->whereHas('master_sku')->with('inCurrentWishlist')->orderByDesc('updated_at')->paginate(40);
$data = [ $data = [
'products' => $products, 'products' => $products,
'items' => ProductList::collection($products)->jsonSerialize(), 'items' => ProductSimple::collection($products)->jsonSerialize(),
]; ];
return view("LatestProducts::latest_products", $data); return view("LatestProducts::latest_products", $data);
} }