250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- threejs
- nft
- netfunnel
- 회고
- 공연티켓
- Laravel
- CSS
- NextJS
- nginx
- PM2
- exceljs
- jquery
- Kaikas
- Ai
- polygon
- 배포
- Remix
- React
- node
- Setting
- miniconda
- 발행
- 라라벨
- git
- nodejs
- pagination
- metamask
- Python
- chatGPT
- 블록체인
Archives
- Today
- Total
박주니 개발 정리
라라벨 검색처리 설명 본문
728x90
반응형
우선 바로 응용이 아닌 간단하게 라라벨 검색처리에 대해서 이해하기 위해 새로운 페이지를 만들어서 정리를 해봤습니다.
1. selectData.blade.php를 생성하고 간단한 검색처리 폼을 만듭니다.
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div>
<h1>Select get Data</h1>
<form action={{ route('selectData.index') }} method="GET">
<select name="select">
<option value="0">title</option>
<option value="1">description</option>
</select>
<input type="text" name="search">
<button type="submit">버튼</button>
</form>
@isset($announcements)
@foreach ($announcements as $announcement)
{{ $announcement->title }}
@endforeach
@endisset
</div>
</div>
</div>
</div>
</div>
@endsection
- 간단한 설명
- select option에서 지정한 value와 input 값을 web.php에 selectData.index로 지정한 controller에서 조건에 맞는 데이터를 가지고 올 것입니다.
- @isset은 select를 했을 때 조건에 부합한 데이터를 보이게 할 것입니다.
2. selectData.blade.php를 보일 수 있게 루트를 설정합니다. 저는 우선 controller에서 SelectDataController를 만들어서 index class를 통해 보이게 했습니다.
Route::get('/selectData', [App\Http\Controllers\SelectDataController::class, 'index'])->name('selectData.index');
3. selectData.blade.php를 보면 버튼을 클릭시 selectData.index로 요청을 했기 때문에 web.php에서 보면 SelectDataController index class에 정보를 받고 compact해서 다시 보낼 수 있게 기본 폼을 만들어줍니다.
public function index(Request $request){
$announcements = null;
if(true == isset($request->select) && true == isset($request->search)){
}
else{
}
return view('selectData', compact('announcements'));
}
- 간단한 설명
- $request에는 프론트에서 보낸 select value, search value가 들어있을 것입니다.
- 우선 조건에 따라서 값을 전달할 것이기 때문에 초깃값을 $announcements = null로 합니다. 조건이 맞으면 그 값을 compact로 보낼 것입니다.
- if~else를 통해서 isset이 true라는 것은 null이 아닌 값이 들어있는 것을 보냈다는 의미이기 때문에 값이 들어잇을 때랑 들어있지 않을 때 어떻게 할 것인지 구분 지을 것입니다.
4. SelectDataController index class에 select-search value가 일치한 값을 내보낼 수 있게 조건문을 완성시킵니다.
public function index(Request $request){
$announcements = null;
if(true == isset($request->select) && true == isset($request->search)){
switch($request->select){
case '0':
$announcements = Announcement::where('title', $request->search)->paginate(10);
Log::info($announcements);
case '1';
$announcements = Announcement::where('description', $request->search)->paginate(10);
break;
}
}
else{
}
return view('selectData', compact('announcements'));
}
- 간단한 설명
- switch 조건문을 사용해서 select의 값을 가져와서 option 지정된 값을 구분을 합니다. 저는 0일때는 title, 1일 때는 description이라고 지정했습니다.
- case가 0일 때는 DB상에서 title이라는 column을 찾고 value가 $request->search 즉 input에 적은 값과 일치했을 때 값을 내보냅니다. case가 1일경우에도 동일합니다. 조건이 다 끝났으면 breack로 멈춰줍니다.
- 조건에 맞는 값을 compact를 통해서 내보내줍니다. 그럼 그 값을 프론트상에 가져오는 것을 볼 수 있습니다.
- DB에 따로 만들어서 title, description을 만들어주고 연결하고 그대로 적용하면 될 것입니다.
5. 해당 url에 접속하셔서 값을 입력하고 버튼을 눌렀을 때 조건에 맞는 data가 append되는 지 확인하시길 바랍니다.
- 주의사항▶ 해당 DB에 데이터를 다양하게 만들어주시길 바랍니다. 현재 제가 적은 조건문으로는 띄어쓰기를 하거나 몇글자만 적으면 해당 데이터를 가지고 오는 것은 안적었기 때문에 띄어쓰기없이 데이터를 추가해주시길 바랍니다.
728x90
반응형
Comments