ichihhd
@ichihhd

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

&検索ができない。

解決したいこと

laravelで商品管理ツールを作っているのですが、その中で会社名と商品名を&検索して検索結果を表示するという機能をつけたいです。

発生している問題・エラー

検索機能で会社名と商品名に値を与えて検索すると、
商品名の入力値だけ引っ掛かり会社名が検索ができません。

product.blade.php

div class="search">
  <form action="{{ route('product') }}" method="GET">
  @csrf
  <!-- 検索フォーム -->
  <div class="product_name.search">
  <label for="product_name">{{ __('商品名') }}</label>
    <input type="text" name="keyword" id="keyword" >
  </div>  

  <div class="company_name.serch">
  <label for="company_name">{{ __('メーカー') }}<span class="badge badge-danger ml-2">{{ __('必須') }}</span></label>
        <select class="form-control" name="company_name" id="company_name">
          <option>{{"メーカーを選択してください"}}</option>
        @foreach ($companies as $company)
         <option name="keyword" id="keyword">{{ $company->company_name }}</option>
         @endforeach
        </select>
       
  </div>

Productcontroller.php

public function showList(Request $request)
    { // 商品一覧画面表示/検索処理

        $keyword = $request->input('keyword');

        $query = Product::query();

        // メーカーの検索部分の値挿入
        $model = new Company();
        $companies = $model ->getCompanyNameById();

        
           
        $query ->join('companies','company_id','=','companies.id')
               ->select('products.*','companies.company_name')
               ->where('products.product_name', 'LIKE', "%$keyword%")
               ->orwhere('companies.company_name', 'LIKE', "%$keyword%")
               ->get();

        $products = $query->get();
            
        return view('product', compact('products','keyword','companies'));
           
        
    }

Company.php

public function getCompanyNameById(){
        $companies = DB::table('companies')->get();

        return $companies;
    }

自分で試したこと

product.blade.phpでの二つの値を読み込むname属性の値を"keyword"で統一し、その値をコントローラー
で処理をしました。

0

1Answer

変数$keywordに何が入っているか確認してみましたか?
フォームからどのような値が送られているか確認してみましょう。

allメソッドを使用して、受信リクエストのすべての入力データをarrayとして取得できます。

$input = $request->all();

1Like

Comments

  1. @ichihhd

    Questioner

    毎度ご回答ありがとうございます。

    company_nameの値が入っていませんでした。
    原因としては同じkeywordにinputしてるからと思い、違い変数を与えてみてあげたらできるようになりました。

    本当に毎回助かります。
    ありがとうございました。

Your answer might help someone💌