我有一个函数在我的用户模型,这是所谓的isAdmin,如果“管理”设置为1在数据库中,它返回真,如果不是它返回假。
这将如何与Auth::user()
工作?
当我执行Auth::user()->isAdmin()
时,它返回"Property [admin] does not exist on this collection instance."
这就是为什么我得出的结论,它可能不使用用户模型?
用户模型
public function isAdmin() {
if($this->admin == 1) {
return true;
} else {
return false;
}
}
个字符
3条答案
按热度按时间2nc8po8w1#
如果我可以建议的话,对于这个用例,你实际上可以不使用额外的函数。你可以只说
auth()->user()->admin
,特别是如果数据库中的“admin”列是布尔类型的话。否则(即使admin列也不是布尔类型),你可以在模型中设置一个mutator方法,如下所示:
字符串
然后检查,您可以像这样访问它:
Auth::user()->isAdmin
或auth()->user()->isAdmin
更好的是,您可能希望阅读有关
Gate
和Policies
的内容,以实现更健壮的访问控制。https://laravel.com/docs/5.7/authorization7nbnzgx92#
建议,把代码改成这样:
字符串
这段代码做的和你上面得到的完全一样。
在
admin.blade.php
中,您可以使用:型
但在控制器中,您有:
型
返回集合。
你应该检查它,并检查每个用户示例是否是管理员:
型
在这方面:
型
unhi4e5o3#
不需要做任何事情,只要检查登录,然后auth()->check()返回true,然后auth()->user()返回用户
个字符