From 4ce6a39d3888b0b9e35fae35e5cc7c63cb828557 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Fri, 4 Nov 2022 14:29:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E5=8F=B0=E4=BA=A7=E5=93=81=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87sku=20model?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Repositories/ProductRepo.php | 13 ++++++++++++- beike/Shop/Http/Controllers/ProductController.php | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/beike/Repositories/ProductRepo.php b/beike/Repositories/ProductRepo.php index b4cab717..2520cb46 100644 --- a/beike/Repositories/ProductRepo.php +++ b/beike/Repositories/ProductRepo.php @@ -98,7 +98,6 @@ class ProductRepo if (isset($data['model'])) { $query->where('model', 'like', "%{$data['model']}%"); } - }); } @@ -108,6 +107,18 @@ class ProductRepo }); } + $keyword = $data['keyword'] ?? ''; + if ($keyword) { + $builder->where(function (Builder $query) use ($keyword) { + $query->whereHas('skus', function (Builder $query) use ($keyword) { + $query->where('sku', 'like', "%{$keyword}%") + ->orWhere('model', 'like', "%{$keyword}%"); + })->orWhereHas('description', function ($query) use ($keyword) { + $query->where('name', 'like', "%{$keyword}%"); + }); + }); + } + if (isset($data['active'])) { $builder->where('active', (int)$data['active']); } diff --git a/beike/Shop/Http/Controllers/ProductController.php b/beike/Shop/Http/Controllers/ProductController.php index 0889938f..6ec86f63 100644 --- a/beike/Shop/Http/Controllers/ProductController.php +++ b/beike/Shop/Http/Controllers/ProductController.php @@ -35,7 +35,7 @@ class ProductController extends Controller public function search(Request $request) { $keyword = $request->get('keyword'); - $products = ProductRepo::getBuilder(['name' => $keyword])->where('active', true)->paginate(); + $products = ProductRepo::getBuilder(['keyword' => $keyword])->where('active', true)->paginate(); $data = [ 'products' => $products,