19. 상품검색 까지

This commit is contained in:
choibk 2025-12-07 10:10:00 +09:00
parent fa0d25c7c2
commit 786e6e283e
3 changed files with 31 additions and 11 deletions

View File

@ -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()

View File

@ -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()

View File

@ -13,18 +13,18 @@
<form class="row g-3 mb-3" method="get">
<div class="col-md-4">
<input type="text" name="search" class="form-control" placeholder="상품명 또는 SKU 검색" value="">
<input type="text" name="search" class="form-control" placeholder="상품명 또는 SKU 검색" value="{{ request('search') }}">
</div>
<div class="col-md-3">
<select name="sort" class="form-select">
<option value="name">상품명</option>
<option value="quantity">수량</option>
<option value="name" {{ request('sort', 'name') === 'name' ? 'selected' : '' }}>상품명</option>
<option value="quantity" {{ request('sort') === 'quantity' ? 'selected' : '' }}>수량</option>
</select>
</div>
<div class="col-md-3">
<select name="order" class="form-select">
<option value="asc">오름차순</option>
<option value="desc">내림차순</option>
<option value="asc" {{ request('order', 'asc') === 'asc' ? 'selected' : '' }}>오름차순</option>
<option value="desc" {{ request('order') === 'desc' ? 'selected' : '' }}>내림차순</option>
</select>
</div>
<div class="col-md-2">