gpt4 book ai didi

php - 拉维尔 5.2 : How to get the role of current user when using `Zizaco/entrust` ?

转载 作者:可可西里 更新时间:2023-11-01 00:02:11 24 4
gpt4 key购买 nike

我正在使用 Laravel 5.2 和 Zizaco/entrust 5.2,我的问题是:
使用Zizaco/entrust时如何获取当前用户的角色?

名称和角色.php

namespace App\Services;

use App\User;
use App\Role;
use Zizaco\Entrust\EntrustRole;
use Illuminate\Support\Facades\Cache;

class NameAndRole
{
public $username;
public $role;

public function __construct() {
$user = \Auth::user();
$this->username = $user->name;
$this->role =$user->roles->first()->name;
}
}

模型:

角色:https://github.com/Zizaco/entrust#role

<?php namespace App;

use Zizaco\Entrust\EntrustRole;

class Role extends EntrustRole
{
}

用户:https://github.com/Zizaco/entrust#user

<?php

use Zizaco\Entrust\Traits\EntrustUserTrait;

class User extends Eloquent
{
use EntrustUserTrait; // add this trait to your user model

...
}

View :sidebar.blade.php

@inject('details','App\Services\NameAndRole')
{{ $details->username }}
{{ $details->role }}

错误:

ErrorException in NameAndRole.php line 20:
Trying to get property of non-object (View: D:\wnmp\www\laravel-entrust\resources\views\employer\partials\sidebar.blade.php) (View: D:\wnmp\www\laravel-entrust\resources\views\employer\partials\sidebar.blade.php)

最佳答案

您可以像 Eloquent 中的任何其他关系一样访问它。因此,要访问用户的角色,您可以执行以下操作:

$user->roles

这将返回一个 Eloquent 集合,因为 User 可以有许多 Role(即它不会只有一个),所以如果您只期望一个角色并且你想要它的字符串值,你可以这样做:

$user->roles->first()->name // or display_name

我猜你可以使用 toArray() 方法将其转换为数组,如果你想使用数组代替:

$user->roles->toArray()

编辑

您可以在分配之前检查用户是否具有角色:

$this->role = $user->roles ? $user->roles->first()->name : 'No role';

关于php - 拉维尔 5.2 : How to get the role of current user when using `Zizaco/entrust` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36719279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com