我正在尝试从 PHP 组件中的特定用户组中过滤用户。首先,我根据关键字搜索特定用户,接下来我想测试该用户是否属于一个特定组“mygroupcode”。理想情况下,这两个陈述应该结合起来。
我尝试了以下方法:
public function onSelect() {
$s2_opts = [];
foreach(User::where('surname', 'LIKE', '%'.Input::get('q').'%')->orWhere('name', 'LIKE', '%'.Input::get('q').'%')->get() as $user) {
if($user->groups()->whereName('mygroupcode')->exists()) {
array_push($s2_opts, array('id' => $user->id, 'text' => $user->name . ' ' . $user->surname));
}
}
return json_encode($s2_opts);
}
这会引发 MySQL 错误。没有找到类似表的东西mydb.groups
......在数据库中,它应该寻找 user_groups 。
另外,我试过:
public function onSelect() {
$s2_opts = [];
foreach(User::where('surname', 'LIKE', '%'.Input::get('q').'%')->orWhere('name', 'LIKE', '%'.Input::get('q').'%')->get() as $user) {
if(in_array('mygroupcode',array_keys($user->groups))) {
array_push($s2_opts, array('id' => $user->id, 'text' => $user->name . ' ' . $user->surname));
}
}
return json_encode($s2_opts);
}
这也会产生 MySQL 错误。类似的,也关于groups
找不到表。
另外,我注意到有一个名为 inGroup() 的方法,但这会产生相同的错误......
public function onSelect() {
$s2_opts = [];
foreach(User::where('surname', 'LIKE', '%'.Input::get('q').'%')->orWhere('name', 'LIKE', '%'.Input::get('q').'%')->get() as $user) {
if($user->inGroup('mygroupcode')) {
array_push($s2_opts, array('id' => $user->id, 'text' => $user->name . ' ' . $user->surname));
}
}
return json_encode($s2_opts);
}
我究竟做错了什么?在此先感谢您的时间。
请注意以下相关问题。他们是关于后端用户列表的,我希望过滤掉前端用户。