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!

テーブル結合を用いた検索機能でエラーが出ました。

解決したいこと

products.company_idとcompanies.idを結合させて、二つの値を&検索し検索機能を追加したいのですが
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'companies.campany_name' in 'field list'"というエラーが出てしまいました。

laravelで登録した商品を部分検索し、検索したものだけを表示させるというものを作っております。

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

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'companies.campany_name' in 'field list'

web.php

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('auth/login');
});

Auth::routes();

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/product', [App\Http\Controllers\ProductController::class, 'showList'])->name('product');
//検索機能のルート
Route::get('/product', [App\Http\Controllers\ProductController::class, 'search'])->name('search');
Route::post('/delete{id}', [App\Http\Controllers\ProductController::class, 'delete'])->name('product.destroy');
Route::get('/product_form', [App\Http\Controllers\productController::class, 'create'])->name('product_form');
Route::post('/product_form', [App\Http\Controllers\productController::class, 'exeCreate'])->name('submit');
Route::get('/detail{id}', [App\Http\Controllers\productController::class, 'detail'])->name('product.detail');
Route::get('/edit/{id}', [App\Http\Controllers\productController::class, 'edit'])->name('product.edit');
Route::post('/update/{id}', [App\Http\Controllers\productController::class, 'update'])->name('product.update');

product.blade.phpの検索フォーム

<div class="search">
  <form action="{{ route('search') }}" 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_id">{{ __('メーカー') }}<span class="badge badge-danger ml-2">{{ __('必須') }}</span></label>
        @foreach ($companies as $company)
        <select class="form-control" name="company_id" id="company_id" value="{{ old('company_id')}}">
         <option name="keyword" id="keyword">{{ $company->company_name }}</option>
        </select>
        @endforeach
  </div>
  
  <input type="submit" value="検索">
  </form>
</div>

Productcontroller.php

public function search(Request $request){
        // 検索機能
        $keyword = $request->input('keyword');

        $product = new Product();
        $company = new Company();

        $products = $product->SearchList($keyword);
        $companies = $company->SearchList($keyword);

        return view('product', compact('products','companies'));
    }

Product.php

public function SearchList($keyword){
        //  検索処理

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

           return $products;
    }

自分で試したこと

調べてみると、productsにcompanies.campany_nameがないというエラーだったため、productsのcompany_idにcompanies.campany_nameを結合したのですがエラーが取れませんでした。
結合したのでcompanies.campany_nameがproductsの一部ということにはならないのでしょうか。
ご教授いただけると幸いです。
よろしくお願いいたします。

0

1Answer

Comments

  1. @ichihhd

    Questioner

    ご回答ありがとうございます!
    ケアレスミスに気づかずお恥ずかしいです。

    おかげでエラーはなくなりました。
    ありがとうございました!

  2. 解決したようで良かったです。
    エディターやIDEによる補完がされないタダの文字列は、タイプミスによる問題が多いです。
    そうした部分はコピペすると間違いがないですし、問題が起きたらまずは文字列検索でチェックすると良いですよ。

  3. @ichihhd

    Questioner

    ありがとうございます。
    参考にさせていただきます。

Your answer might help someone💌