首页 > 解决方案 > 如何防止特定单词搜索结果 laravel

问题描述

我需要阻止一些特定的搜索,比如用户名。

场景是当我搜索 auth username 我得到所有朋友但如果我搜索 auth username 我不想搜索结果,

这是我的查询

$searchVal = $request->input('search');
$friend_data = Friend::with('getAccept', 'getRequest')->where('status', '1')->where(static function ($q) use ($user) {
            $q->where('user_id', $user->id)->orWhere('ref_id', $user->id);
        })->where(function ($q1) use ($searchVal) {
            if($searchVal) {
                $q1->whereHas('getRequest', function ($q) use ($searchVal) {
                    $q->where('username', 'LIKE', '%' . $searchVal . '%');                
                });
                $q1->orWhereHas('getAccept', function ($q) use ($searchVal) {
                    $q->where('username', 'LIKE', '%' . $searchVal . '%');                    
                });
            }
        })->get();

提前致谢。

标签: phpregexlaraveleloquent

解决方案


只需if($searchVal)在您的where函数中替换为if($searchVal !== Auth::user()->username)并且应该排除身份验证用户名结果。


推荐阅读