【问题标题】:how to show in the view a object and the attribute of another table如何在视图中显示一个对象和另一个表的属性
【发布时间】:2020-09-17 10:24:14
【问题描述】:

好吧,我正在使用 laravel,我有两个表,一个用于用户,另一个用于角色,我在视图中显示了一个表,其中包含每个用户的属性以及他们关联的角色。问题是属性是id,显示的是角色表的id,如何显示角色名而不是id?

这是我获取用户列表的函数:

public function index()
{

    $users = User::latest()->get();
    return view('users.index', [
        'users'=>$users,
    ]);
}

这是我建立一个表来显示属性的视图,在 role_id 属性中,我只有与角色表关联的数字。当我真的需要显示名字时。

            @foreach($users as $user)
                <tr>
                    <td>{{$user->name}}</td>
                    <td>{{$user->last_name}}</td>
                    <td>{{$user->age}}</td>
                    <td>{{$user->DOB}}</td>
                    <td>{{$user->height}}</td>
                    <td>{{$user->role_id}}</td>
                    <td><a href="{{$user->path_edit()}}">Edit</a> <a href="/users/{{$user->id}}/destroy" > - Delete </a></td>

                </tr>
            @endforeach

这是数据库:

【问题讨论】:

    标签: php arrays laravel object


    【解决方案1】:

    使用角色表与您的用户建立关系。在您的用户模型中编写以下代码

        public function role()
        {
            return $this->belongsTo(Role::class);
        }
    

    在你的视图文件中使用它

    <td>{{$user->role->name}}</td>
    

    【讨论】:

    • 更多关于关系的信息在这里:laravel.com/docs/7.x/eloquent-relationships
    • 您还需要检查用于互连模型的属性名称。您可以像这样明确指定它们:$this-&gt;belongsTo(Role::class, 'role_id', 'id');
    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 2021-09-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多