19. 상품검색 까지
This commit is contained in:
parent
fa0d25c7c2
commit
786e6e283e
@ -4,16 +4,29 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\Product;
|
use App\Models\Product;
|
||||||
use APP\StockLog\StockService;
|
use App\Services\StockService;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
class ProductController extends Controller
|
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 = '상품목록';
|
$title = '상품목록';
|
||||||
$products = Product::searchkeyword();
|
$products = Product::searchkeyword($search, $sort, $order, $perPage);
|
||||||
return view('product.list', compact('title', 'products'));
|
return view('product.list', compact('title', 'products'));
|
||||||
}
|
}
|
||||||
public function input()
|
public function input()
|
||||||
|
|||||||
@ -8,10 +8,17 @@ class Product extends Model
|
|||||||
{
|
{
|
||||||
protected $table = 'products';
|
protected $table = 'products';
|
||||||
protected $guarded = [];
|
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');
|
$query = self::select('id', 'name', 'sku', 'price', 'quantity', 'created_at');
|
||||||
return $return->paginate(1);
|
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()
|
public function stockLogs()
|
||||||
|
|||||||
@ -13,18 +13,18 @@
|
|||||||
|
|
||||||
<form class="row g-3 mb-3" method="get">
|
<form class="row g-3 mb-3" method="get">
|
||||||
<div class="col-md-4">
|
<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>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<select name="sort" class="form-select">
|
<select name="sort" class="form-select">
|
||||||
<option value="name">상품명</option>
|
<option value="name" {{ request('sort', 'name') === 'name' ? 'selected' : '' }}>상품명</option>
|
||||||
<option value="quantity">수량</option>
|
<option value="quantity" {{ request('sort') === 'quantity' ? 'selected' : '' }}>수량</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<select name="order" class="form-select">
|
<select name="order" class="form-select">
|
||||||
<option value="asc">오름차순</option>
|
<option value="asc" {{ request('order', 'asc') === 'asc' ? 'selected' : '' }}>오름차순</option>
|
||||||
<option value="desc">내림차순</option>
|
<option value="desc" {{ request('order') === 'desc' ? 'selected' : '' }}>내림차순</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user