laravel - 雄辩的查询构建器搜索不特定于角色
问题描述
我想写一个查询,让具有特定角色的用户满足搜索要求。这是我的用户模型
用户.php
public static function agent_search($query)
{
return empty($query) ? static::query()
: static::where(function($q) use ($query) {
$q->where('role', 'agent');
})
->orWhere('first_name', 'like', '%'.$query.'%')
->orWhere('last_name', 'like', '%'.$query.'%')
->orWhere('phone_number', 'like', '%'.$query.'%')
->orWhere('email', 'like', '%'.$query.'%');
}
然后我像这样在我的控制器中调用它
User::agent_search($this->search)->paginate(20),
结果是调用所有用户而不是具有该特定角色的用户。我该怎么办?
解决方案
您可以使用本地范围:
public static function scopeAgentSearch($query,$search)
{
if($search) {
$query->where('role', 'agent')
->where(function($sub_q) use ($search) {
$sub_q->where('first_name', 'like', '%'.$query.'%')
->orWhere('last_name', 'like', '%'.$query.'%')
->orWhere('phone_number', 'like', '%'.$query.'%')
->orWhere('email', 'like', '%'.$query.'%');
});
}
}
在控制器中:
User::AgentSearch($this->search)->paginate(20);
推荐阅读
- cerberus - Can a Cerberus schema have an arbitrary name for the base dict?
- android - Android Lint 错误:任务“:react-native-sensitive-info:lint”执行失败
- c# - Oracle.ManagedDataAccess blows up on DbFunctions.CreateDate
- vb.net - 最小绑定 TextBlock 到属性
- powerbi - 计数 if <= 逐行计算
- c++ - Alignment of Member Array in Class not Working
- wpf - 如何在 .net core 3 WPF 应用程序上开始使用 MvvmLight?
- javascript - JavaScript中数组列表的Excel公式
- javascript - 使用 javascript 创建链接
- reactjs - 设置状态后 UI 未更新