Я создаю форму поиска для таблицы posts
.
Теперь я могу искать описание, но когда я выбираю категорию или дату и выполняю поиск, на странице результатов отображаются все сообщения. Это означает, что функции поиска для категорий и дат не работают.
Я не хочу создавать строгий поиск, поэтому я использовал orWhere
запрос.
web.php
Route::get('results', 'ResultsController@index')->name('posts.result');
ResultsController.php
public function index(Request $request)
{
$keyword = $request->get('keyword');
$category = $request->get('category_id');
$date = $request->get('date');
if ($keyword || $category || $date) {
$posts = Post::Where('keyword', 'LIKE', '%' . $keyword . '%')
->orWhere('category_id', $category)
->orWhere('date', $date)
->paginate(10);
return view('posts.result', compact('posts'));
} else {
$posts = Post::latest()
->orderBy('date', 'asc')
->paginate(10);
return view('posts.result', compact('posts'));
}
}
публикация таблицы миграции
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('image');
$table->unsignedBigInteger('category_id');
$table->string('title');
$table->string('place');
$table->string('map');
$table->date('date');
$table->string('organizer');
$table->string('organizer_link');
$table->timestamp('published_at')->nullable();
$table->text('description');
$table->timestamps();
});
result.blade.php
<form action="{{ route('posts.result') }}" class="search" method="GET">
<input type="text" name="description" class="search_text" placeholder="Enter the key words">
<select name="category" id="select" class="Genre">
<option value="" hidden name="category">Category</option>
@foreach(App\Category::all() as $category)
<option value="{{$category->id}}">{{$category->name}}</option>
@endforeach
</select>
<input type="text" name="date" class="search_date" id="date" placeholder="Choose date">
<button type="submit" class="test">
<i class="fas fa-search "></i>
</button>
</div>
</form>