在 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_idauth()。因此,如果您想获取/获得属于特定管理员的特定权限,您需要将两个密钥(admin_idpriv_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));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...