検索フォームを追加したいです。
解決したいこと
Laravelで商品管理システムをつくっています。
検索フォームの作成をしており、色々なサイトを見ながら進めているのですが、
なかなか上手くいきません。
解決法を教えてください。
下の写真のような感じにしたいです。
発生している問題・エラー
検索を押しても、404のエラーメッセージが出ます。
また、キーワード検索しても全く関係のないものまで出てくることもありました。
該当するソースコード
@extends('layouts.app')
@section('content')
<div class="container">
<h1 class="mb-4">商品一覧画面</h1>
<div class="search mt-5">
<form action="{{ route('products.index') }}" method="GET">
<input type="search" placeholder="検索キーワード" name="search" value="@if (isset($search)) {{ $search }} @endif">
<input type="search" placeholder="メーカー名" name="company_id" value="@if (isset($company_id)) {{ $company_id }} @endif">
<div>
<button type="submit">検索</button>
</div>
</form>
@foreach($products as $product)
<a href="{{ route('products.show', )}}"
</div>
<div class="products mt-5">
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>商品画像</th>
<th>商品名</th>
<th>価格</th>
<th>在庫数</th>
<th>メーカー名</th>
<th><a href="{{ route('products.create') }}" class="btn btn-warning">新規登録</a></th>
</tr>
</thead>
<tbody>
@foreach ($products as $product)
<tr>
<td>{{ $product->id }}</td>
<td><img src="{{ asset($product->img_path) }}" alt="商品画像" width="100"></td>
<td>{{ $product->product_name }}</td>
<td>{{ $product->price }}</td>
<td>{{ $product->stock }}</td>
<td>{{ $product->company->company_name }}</td>
</td>
<td>
<a href="{{ route('products.show', $product) }}" class="btn btn-info btn-sm mx-1">詳細</a>
<form method="POST" action="{{ route('products.destroy', $product) }}" class="d-inline">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger btn-sm mx-1">削除</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</form>
{{ $products->appends(request()->query())->links() }}
</div>
@endsection
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use App\Models\Company;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$query = Product::query();
if($search = $request->search) {
$query->where('product_name', 'LIKE', "%{$search}%");
}
if($company_id = $request->company_id) {
$query->where('company_id', 'LIKE', "%{$company_id}%");
}
$products = $query->paginate(10);
return view('products.index', compact('products'));
}