首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >此集合实例上不存在属性[name]。雄辩的Laravel

此集合实例上不存在属性[name]。雄辩的Laravel
EN

Stack Overflow用户
提问于 2019-07-15 17:10:59
回答 1查看 49关注 0票数 0

对于Eloquent,我有一个潜在的基本问题。我只想显示与该用户的角色相对应的名称。我使用了雄辩的关系ManytoMany。但我不能让它起作用。

我尝试使用$users参数指向该名称,但这不起作用。

我的项目有三个文件,例如视图角色模型,StudentController,。

谢谢。

角色模型

class Role extends Model
{
    protected $fillable = ['id','role_name','role_level','role_note'];

    public function users()
    {
        return $this->belongsToMany('App\User', 'role_users', 'user_id', 'role_id');
    }

}

我的StudentController

class StudentController extends Controller
{
    public function find_username()
    {
        $roles = Role::all();

        foreach($roles as $role)
        {
            echo $role->users . '<br>';
        }
        return view('find_username',['roles'=> $roles]);
    }
}

My find_username视图

@extends('master')
@section('content')
<div class="row">
    <table class="table">
        <thead>
            <tr>
                <th>ID Role</th>
                <th>Role name</th>
                <th>Role level</th>
                <th>Role note</th>
                <th>User name</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($roles as $item)
                <tr>
                <td>{{$item['id']}}</td>
                <td>{{$item['role_name']}}</td>
                <td>{{$item['role_level']}}</td>
                <td>{{$item['role_note']}}</td>
                <td>{{$item->users}}</td>
                </tr>
            @endforeach
        </tbody>
    </table>
</div>
@endsection
EN

回答 1

Stack Overflow用户

发布于 2019-07-16 03:10:32

你有很多角色。这些角色中的每一个都有许多用户。您的表可以显示角色的名称、角色级别和角色说明,因为它们分别位于循环的$item变量中。

问题是,当$item保存这些单独的字段时,$item->users是另一个用户对象集合。这意味着您已经在表中添加了另一个维度。您可能要在该<tr>中容纳1或100个用户。

要进行演示,请尝试以下代码,特别是添加所有用户名(将参数添加到新循环中的每个用户对象):

@foreach ($roles as $item)
   <tr>
    <td>{{$item['id']}}</td>
    <td>{{$item['role_name']}}</td>
    <td>{{$item['role_level']}}</td>
    <td>{{$item['role_note']}}</td>
    @foreach($item->users as $user)
       <td>
         {{$user->name}}
         {{$loop->last?"":" | "}}  //<-- just to separate names for this test
       </td>
    @endforeach
   </tr>
@endforeach

如果您正确设置了模型和关系,则会显示每个角色的用户。但是,正如您所看到的,这可能不是显示此数据的最佳方式。每个角色可能有几十个用户。您可能希望考虑为每个角色的用户创建一个完全不同的表。也许可以单击此表中角色的某些内容,然后显示具有该角色的用户的新列表或表。

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57036543

复制
相关文章

相似问题

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