首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用Laravel中未定义的方法App\User::role()

调用Laravel中未定义的方法App\User::role()
EN

Stack Overflow用户
提问于 2019-09-12 11:02:11
回答 3查看 21.8K关注 0票数 2

我希望创建一个具有特定角色的用户列表(如果指定多个角色,则创建一个角色)。

在我的UserController里

代码语言:javascript
复制
use DB;
use Auth;
use Storage;

use App\Role;
use App\HasRoles;
use App\User;
use App\Profile;

$users = User::with('roles')->where('name', 'admin')->get();
return view('dashboard.users.index', compact('users')); 

但我犯了这个错误

如果我dd($users);

我看得出来那些角色在那里

我怎样才能解决这个问题?谢谢!

编辑:用户模型

代码语言:javascript
复制
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable, HasRoles;

    protected $fillable = [
        'name', 'email', 'phone_number', 'avatar', 'password', 'verification_code'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
        'phone_verified_at' => 'datetime',
    ];

    public function profile()
    {
        return $this->hasOne('App\Profile', 'user_id','id');
    }

    public function mailingAdd()
    {
        return $this->hasOne('App\MailingAddress', 'user_id','id');
    }

user/index.php

代码语言:javascript
复制
@foreach($users->role as $item)
    <tr>
        <td>{{ $loop->iteration }}</td>
        <td><a href="{{ url('/dashboard/users', $item->id) }}">{{ $item->name }}</a></td>
        <td>{{ $item->email }}</td>
        <td>{{ $item->role()->name }}</td>
        <td>{{ $item->phone_number==null ? 'None' : $item->phone_number  }}</td>
        <td>
            @if($item->phone_verfied_at==null)
                <span class="badge badge-danger">not yet verified</span>
            @else
                <span class="badge badge-success">verified</span>
            @endif
        </td>
    </tr>
@endforeach     

@foreach($users->role as $item)转换为@foreach($user->roles as $item)可以得到“此集合实例中不存在属性角色”。

用户表迁移

角色和权限表迁移

答案

根据西蒙莫里斯的答案。

代码语言:javascript
复制
@foreach($users as $user)
    {{ $user->name }}
    @foreach ($user->roles as $role)
        {{ $role->name }}
    @endforeach
@endforeach

我删除了我在这里的一些建议中添加的基础关系。并实现我上面粘贴的答案。

如果用户指定了多个角色,则该代码将显示包含其特定用户角色的用户列表。

谢谢你们的回答!干杯!

EN

Stack Overflow用户

回答已采纳

发布于 2019-09-12 11:06:31

您正在调用$user->role()而不是$user->roles()

要将它们作为要循环遍历的数组,您需要执行以下操作

代码语言:javascript
复制
foreach($user->roles as $role){
  // do something with role here
}
票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57905292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档