如何解决在 Laravel 中查询用户的多对多关系
我有一个“Admin”模型,它与“Priv”模型存在多对多关系。有一个名为“admins_privs”的数据透视表将两者联系在一起,因为许多管理员可以拥有许多权限。
我需要做的是(在 Blade 中)检查登录的管理员是否具有特定的 priv(通过 ID),如果为真,则显示某些内容。我想在管理模型中添加一个函数:
// Admin.php
public function HasPriv($priv_id)
{
// Need help here!!!
}
然后我可以在我的刀片模板中调用这个函数:
// BLADE TEMPLATE
@if (Auth::guard('admin')->user()->HasPriv(1))
DO SOMETHING
@endif
我需要在第一个代码块中添加什么,以搜索多对多关系以查看用户是否链接到 Priv。
任何帮助将不胜感激。
谢谢M
解决方法
一个数据透视表与两个模型相关,因此它有两个admin_id
。对于您的情况,admins_privs 表将具有 priv_id
和 auth()
。因此,如果您想获取/获得属于特定管理员的特定权限,您需要将两个密钥(admin_id 和 priv_id)传递给控制器。或者从 public function HasPriv($priv_id,$admin_id)
{
$pivot = DB::table('admins_privs')
->where(admin_id,$admin_id)
->where(priv_id,$priv_id)
->get()->first();
return $pivot; // will be null if admin does not have the privilege
}
获取 admin_id 内部控制器。
admin_controller:
void bar(int a,int b) { }
for_each_arg(
[](auto&&tup){
return std::apply(bar,decltype(tup)(tup));
}
)(std::make_tuple(1,2));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。