0

我有一个查询,我在其中返回了很多行,因此需要限制我要回调的字段,所以我正在使用selectwhere 方法。

但是,我也想通过忽略某些群体中的人来进一步限制它。

我目前有

$users = Adldap::search()
            ->select('extensionattribute2', 'mail', 'samaccountname')
            ->where('company', '=', $company)
            ->get();

有人可以帮我添加一个 where 子句,以便我只能从中选择不在 4 个组中的用户。

例如。选择所有用户,但不选择“帐户”、“人力资源”、“管理员”中的用户。

4

2 回答 2

0

那么你可以whereNotIn为这种情况写。为了快速回答,我假设您有一个数据库字段,group_name其中包括"Accounts", "HR", "Admins". 这只是为了向你澄清。您可以更改数据库字段名称。

$users = Adldap::search()
        ->select('extensionattribute2', 'mail', 'samaccountname')
        ->where('company', '=', $company)
        ->whereNotIn('group_name', ["Accounts", "HR", "Admins"])
        ->get();

此查询将返回所有忽略的用户"Accounts", "HR", "Admins"

于 2020-05-12T19:24:01.090 回答
0

使用 whereDoesntHave:

$unwantedGroups=["Accounts", "HR", "Admins"];
$users=Adldap::search()->whereDoesntHave('groups',function (Builder $query) use($unwantedGroups){
    $query->whereIn('groupName', $unwantedGroups)
})->select('extensionattribute2', 'mail', 'samaccountname')
->where('company', '=', $company)->get();

请注意用户和组“组或组”之间的关系名称。

更多细节在: https ://laravel.com/docs/7.x/collections#method-wherein

于 2020-05-12T19:26:42.350 回答