首页 > 解决方案 > 调用 Laravel Auth 辅助方法的最佳方法

问题描述

我有一个简单的用户表

-id
-name
-email
-role

我应该使用第一种还是第二种方法?!

第一种方法

1.

if(auth()->user()->role == 'admin')
{
   // do something
}
else if (auth()->user()->role == 'supervised')
{
  // do something
}
else{
  //this is a simple user
}

这是第二种方法

2.

$auth = auth()->user();
if($user->role == 'admin')
{
   // do something
}
else if ($user->role == 'supervised')
{
  // do something
}
else{
  //this is a simple user
}

这个方法auth()->user()每次我调用它时都会调用数据库吗!!!?

标签: phplaravelauthentication

解决方案


auth()->user()当您使用或关系(已加载/设置)时,它不会进行多次调用。您可以安装发条并检查它。

不过,我不会在 User 类之外进行这些比较。将这些方法添加到您的用户模型中。

public function isAdmin()
{
    return $this->role === 'admin';
}

public function isSupervised()
{
    return $this->role === 'supervised';
}

并像使用它们一样;

auth()->user()->isAdmin()

推荐阅读