php - 调用 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()
每次我调用它时都会调用数据库吗!!!?
解决方案
auth()->user()
当您使用或关系(已加载/设置)时,它不会进行多次调用。您可以安装发条并检查它。
不过,我不会在 User 类之外进行这些比较。将这些方法添加到您的用户模型中。
public function isAdmin()
{
return $this->role === 'admin';
}
public function isSupervised()
{
return $this->role === 'supervised';
}
并像使用它们一样;
auth()->user()->isAdmin()
推荐阅读
- bash - 加入的意外问题
- cpu-architecture - 为什么看存储的电影不慢
- windows - 在 AWS 如何将“Microsoft Windows Server 2016”服务器实例迁移到“Microsoft Windows Server 2016 with SQL Server 2017 Standard”?
- node.js - 使用 nodejs 正则表达式查找 ksh 函数
- python - 限制特定 pyparsing 表达式中的新行
- algorithm - 如何实施 SAT 求解器以进行 kSAT 练习?
- python - 使用一行转换列表中所有元素的属性类型
- android - Firebase Analytics VIEW_ITEM_LIST 项目未显示
- python - 导入 BERT 时出错:模块 'tensorflow._api.v2.train' 没有属性 'Optimizer'
- java - 无法从 TemporalAccessor 获取 LocalTime