Laravel Eloquent在关联表中搜索

3

我有一个用户列表,其中每个用户都有多个角色。我希望我的ajax搜索方法可以在这个结果集中进行搜索(例如,用户1既有用户角色又有管理员角色)。因此,我编写了以下请求:

$usersData = User::where('name', 'like', $queryString . '%')
        ->orWhere('email', 'like', $queryString . '%')
        ->orWhere('username', 'like', $queryString . '%')
        ->when($limit > 0 || $offset > 0, function ($usersData) use ($limit, $offset) {
            $usersData->take($limit)->skip($offset);
        })
        ->with('roles:name')->whereHas('roles',function($query) use($queryString){
            $query->where('roles.name','like',$queryString.'%');
        })
        ->get();

但是它没有起作用,你有什么想法是问题吗?谢谢。
1个回答

3

使用orWhereHas()代替whereHas()

->orWhereHas('roles', function($query) use($queryString){
    $query->where('name', 'like', '%' . $queryString. '%');
})

1
太好了,完美无缺!我现在明白了,谢谢! - Eloise85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接