You need to enable JavaScript to run this app. Laravel 8中如何实现搜索框按前端显示文本筛选布尔值字段
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8中如何实现搜索框按前端显示文本筛选布尔值字段

解决方案

完全可以实现,你只需要新增一层搜索词到数据库布尔值的映射逻辑即可,修改后的代码如下:

$search = $this->search;
$searchLike = '%' . $search . '%';

// 前端显示文本到数据库存储值的映射,可根据需求修改为中文
$approvedMap = [
    'approved' => 1,
    'not approved' => 0
];
$searchApprovedVal = null;
// 转小写处理适配大小写输入,无需用户严格匹配大小写
$lowerSearch = strtolower(trim($search));
if (isset($approvedMap[$lowerSearch])) {
    $searchApprovedVal = $approvedMap[$lowerSearch];
}

$comments = Comment::where(function ($query) use ($searchLike, $searchApprovedVal) {
    // 原有普通字段模糊匹配逻辑
    $query->where('title', 'like', $searchLike)
        ->orWhere('name', 'like', $searchLike)
        ->orWhere('email', 'like', $searchLike)
        ->orWhere('message', 'like', $searchLike);
    
    if (!is_null($searchApprovedVal)) {
        // 匹配到审核状态文本时,直接查询对应布尔值
        $query->orWhere('approved', '=', $searchApprovedVal);
    } else {
        // 未匹配到状态文本时保留原有逻辑,兼容0/1搜索习惯
        $query->orWhere('approved', 'like', $searchLike);
    }
})
->orderBy('created_at', 'desc')
->paginate($this->paginate);

额外说明

  • 如果你的前端显示文本是中文,只需要修改$approvedMap的键为对应中文即可,比如改成'已通过' => 1, '未通过' => 0
  • 所有模糊查询条件统一放到where闭包中,避免后续新增全局筛选条件(如权限校验、软删除过滤)时出现SQL逻辑错误
  • 自动适配大小写输入,用户输入Approved、APPROVED、not approved都可以正确识别

内容的提问来源于stack exchange,提问作者kgcusi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 20:54:04