laravel - Laravel8中未显示多个关键字搜索sql语句
问题描述
我正在研究关键字搜索。我成功进行了单个关键字搜索,现在我正在尝试进行多个关键字搜索。
作为半角空格关键字拆分。我从这个网站使用这个中间件
https://qiita.com/logue/items/64c4b5545f76ef17de70
当我 dd() 。我可以看到关键字拆分很好。但是当我搜索功能运行时没有出现sql语句,我可以显示空的结果页面。
你能教我正确的代码吗?
控制器
public function order_adv()
{
$keyword = request('search_adv');
if(!empty($keywords)) {
foreach ($keywords as $keyword) {
$products = Product::when('w_m','like','%'.$keyword.'%');
}
}
return view('products.result_adv' , compact('products'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
WEB.php
Route::get('products/search_adv', [ProductController::class, 'search_adv'])->name('search_adv');
Route::post('products/search_adv', [ProductController::class, 'order_adv'])->name('products.search_adv')->middleware('keyword');
解决方案
您可以使用 where 回调方法
public function order_adv()
{
$keywords =explode(' ',request('search_adv'));
$products = Product::when(count((array)$keywords),function($query)use($keywords){
$query->where(function($query)use($keywords){
foreach ($keywords as $keyword) {
$query->orWhere('w_m','like','%'.$keyword.'%');
}
});
})->get();
return view('products.result_adv' , compact('products'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
推荐阅读
- sql - 查询如何工作?
- android - 如何检查android设备是否有来自服务器的互联网连接?
- c++ - 全局变量 (C/C++)
- node.js - 如何在 MongoDB 中创建动态查询?
- android - 仅在比其所在位置高 1 个单元格或低 1 个单元格的位置选择演员
- php - 如何检查状态并从后台php中的服务器链接下载文件
- excel - 无法计算出用户表单 Excel 上的“范围。查找”下一个单元格
- jenkins - 如何与詹金斯团队分享 mercurial hooks
- clojurescript - 多面板重构未按预期工作
- python - xarray DataArray.sel 返回最初未分配给数据的坐标