【发布时间】:2018-01-19 21:01:57
【问题描述】:
我正在尝试过滤来自 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);
}
我做错了什么?提前感谢您的宝贵时间。
请注意以下相关问题。他们是关于后端用户列表,我希望过滤掉前端用户。
【问题讨论】:
标签: octobercms octobercms-plugins octobercms-user-plugin