From 786e6e283e5abf7f19588ae347b547be72674885 Mon Sep 17 00:00:00 2001 From: choibk Date: Sun, 7 Dec 2025 10:10:00 +0900 Subject: [PATCH] =?UTF-8?q?19.=20=EC=83=81=ED=92=88=EA=B2=80=EC=83=89=20?= =?UTF-8?q?=EA=B9=8C=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/ProductController.php | 19 ++++++++++++++++--- app/Models/Product.php | 13 ++++++++++--- resources/views/product/list.blade.php | 10 +++++----- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index c52b517..a1efd7c 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -4,16 +4,29 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Product; -use APP\StockLog\StockService; +use App\Services\StockService; use Illuminate\Support\Facades\Storage; use Illuminate\Validation\Rule; class ProductController extends Controller { - public function index() + public function index(Request $request) { + $validated = $request->validate([ + 'search' => ['nullable', 'string', 'max:255'], + 'sort' => ['nullable', Rule::in(['name', 'quantity'])], + 'order' => ['nullable', Rule::in(['asc', 'desc'])], + 'per_page' => ['nullable', 'integer', 'min:1', 'max:200'], + ]); + + $search = $validated['search'] ?? null; + $sort = $validated['sort'] ?? 'name'; + $order = $validated['order'] ?? 'asc'; + $perPage = $validated['per_page'] ?? 2; + // dd($search); + $title = '상품목록'; - $products = Product::searchkeyword(); + $products = Product::searchkeyword($search, $sort, $order, $perPage); return view('product.list', compact('title', 'products')); } public function input() diff --git a/app/Models/Product.php b/app/Models/Product.php index f135643..a3b17ac 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -8,10 +8,17 @@ class Product extends Model { protected $table = 'products'; protected $guarded = []; - static public function searchkeyword() + static public function searchkeyword($search = null, $sort = 'name', $order = 'asc', $perPage = 2) { - $return = self::select('id', 'name', 'sku', 'price', 'quantity', 'created_at'); - return $return->paginate(1); + $query = self::select('id', 'name', 'sku', 'price', 'quantity', 'created_at'); + if(!empty($search)) { + $query->where(function ($q) use ($search) { + $q->where('name', 'like', "%{$search}%") + ->orWhere('sku', 'like', "%{$search}%"); + }); + } + $query->orderBy($sort, $order); + return $query->paginate($perPage)->withQueryString(); } public function stockLogs() diff --git a/resources/views/product/list.blade.php b/resources/views/product/list.blade.php index 4ccd851..4e9ab21 100644 --- a/resources/views/product/list.blade.php +++ b/resources/views/product/list.blade.php @@ -13,18 +13,18 @@
- +