Laravel 仅限用户的范围查询 - 排除管理员的结果
Laravel scope query only for users - exclude result for admin
我是编程新手,正在尝试在 Laravel / Voyager 上做一些工作。
我有一个客户 table,在这个 table 上还有一个 Customer_Representative 字段,我可以在其中 select / 从下拉列表中指定客户代表。
我想要实现的是,我希望每个具有指定角色(客户代表)的用户列出仅为他们指定的客户。
我正在使用以下代码,但无法看到其他用户创建的客户列表。
我只能看到我/管理员创建的客户,但如果我使用他们的详细信息登录,我可以看到他们分配的客户。
因此,作为管理员,我希望能够看到所有客户,这样我也可以使用我的登录凭据编辑它们。
public function scopeCurrentUser($query)
{
return $query->where('Customer_Representative', Auth::user()->id);
}
我看到很多人建议使用 if 但我不知道该怎么做。
感谢您的支持!
如果我没理解错的话,你要显示:
- 管理员用户 - 所有用户
- non-admin 用户 - 仅分配的用户
您可以在控制器中更改查询,但如果您想在范围内进行,我建议这样:
public function scopeCurrentUser($query)
{
return $query->when(auth()->user()->is_not_admin, function ($q) {
$q->where('Customer_Representative', auth()->user()->id)
});
}
您将 auth()->user()->is_not_admin 更改为您的 non-admin 验证条件。该范围利用 ->when() 函数附加条件以仅在条件(在本例中,如果经过身份验证的用户不是管理员)为真时进行查询。
因此,如果经过身份验证的用户不是管理员,他的查询将被 Customer_Representative 过滤。
我是编程新手,正在尝试在 Laravel / Voyager 上做一些工作。
我有一个客户 table,在这个 table 上还有一个 Customer_Representative 字段,我可以在其中 select / 从下拉列表中指定客户代表。
我想要实现的是,我希望每个具有指定角色(客户代表)的用户列出仅为他们指定的客户。
我正在使用以下代码,但无法看到其他用户创建的客户列表。
我只能看到我/管理员创建的客户,但如果我使用他们的详细信息登录,我可以看到他们分配的客户。
因此,作为管理员,我希望能够看到所有客户,这样我也可以使用我的登录凭据编辑它们。
public function scopeCurrentUser($query)
{
return $query->where('Customer_Representative', Auth::user()->id);
}
我看到很多人建议使用 if 但我不知道该怎么做。
感谢您的支持!
如果我没理解错的话,你要显示:
- 管理员用户 - 所有用户
- non-admin 用户 - 仅分配的用户
您可以在控制器中更改查询,但如果您想在范围内进行,我建议这样:
public function scopeCurrentUser($query)
{
return $query->when(auth()->user()->is_not_admin, function ($q) {
$q->where('Customer_Representative', auth()->user()->id)
});
}
您将 auth()->user()->is_not_admin 更改为您的 non-admin 验证条件。该范围利用 ->when() 函数附加条件以仅在条件(在本例中,如果经过身份验证的用户不是管理员)为真时进行查询。
因此,如果经过身份验证的用户不是管理员,他的查询将被 Customer_Representative 过滤。