我使用 Laravel 11 创建了一个搜索,该搜索位于控制器中并与另一个表有连接。但是,使用连接时,某些结果不会显示。这是我的控制器:公共函数搜索(
我使用 Laravel 11 创建了一个搜索,该搜索位于控制器中并与另一个表有连接。但是,使用连接时,某些结果不会显示。这是我的控制器:
public function search(Request $request){
$query = $request->input('query');
$result = Catagory::where('catagories.name','like',"%$query%")
->orWhere('size','like',"%$query%")
->orWhere('email','like',"%$query%")
->orWhere('description', 'like', "%$query%")
->join('products', 'products.id', '=', 'catagories.catagory_id')
->select('products.*','products.name as products_name')
->get();
return view('search.results')->with('result', $result);
}
这是刀片:
<form action="{{route('search')}}" method= 'GET'>
@csrf
<input type="text" name="query" id="query">
<button class="btn btn-primary-sm" type="submit">Search</button>
这是路线:
Route::get('/search/search', [CatagoriesController::class,'search'])->name('search');
当我运行上述搜索时,我得到了 catagories.name
产品名称和(连接)。此外,如果我删除连接,我会得到所有数据大小、电子邮件、描述,而这些是使用连接时无法得到的
正如我上面所说的删除连接,它可以工作但没有products_name,我用dd检查了$request和$query。
请尝试此查询,首先使用 select,然后使用 join,最后使用 where 语句
public function search(Request $request){
$query = $request->query;
$result = DB::table('categories')
->select(''catagories.name','products.*','products.name as products_name')
->join('products', 'products.id', '=', 'catagories.catagory_id')
->where('catagories.name','like',"%$query%")
->orWhere('size','like',"%$query%")
->orWhere('email','like',"%$query%")
->orWhere('description', 'like', "%$query%")
->get();
return view('search.results')->with('result', $result);
在搜索之前也要使用 dd($result)
;来确认您的查询结果。