繁体   English   中英

如何在Laravel中使用Eloquent Relationship在视图中显示两个表数据

[英]How to show two table data in a view using Eloquent Relationship in Laravel

我有两个表名是UserRole Table。 我在Laravel Eloquent中使用数据透视表名称Role_User在它们之间设置了许多关系。 现在,我想在这两个表中的数据显示使用起来雄辩关系图。(例如我想在我看来,以显示从用户表中包含的角色表,角色的用户)

在这里,我是雄辩的关系。

public function roles()
{
    return $this->belongsToMany('App\Role');
}
public function users()
{
    return $this->belongsToMany('App\User');
}

我的,雄辩的关系查询。

    $users=User::with('roles')->get();

    return view('admin',compact('users'));

我在我的视图中尝试。

    @foreach($users as $user)
    <tr>
        <td>{{$user->name}}</td>
        <td>{{$user->email}}</td>
        <td>{{$user->roles->name}}</td>
        <td></td>
    </tr>
    @endforeach

当您调用$user->roles ,您将获得一组角色。 因此,如果要将它们全部显示在一个字符串中,您只需要在该字符串上内嵌集合:

<td>{{$user->roles->implode('name', ', ')}}</td>

您的$user->rules是Role of Role模型的实例。 你可以再使用一个foreach:

@foreach($users as $user)
    //do something with user
    @foreach($user->roles as $role)
        {{$role->name}}
    @endforeach
@endforeach

这将适用于Laravel 5.0及更高版本如果我们有两个Model User和Mark。 然后在用户模型内部创建与Mark关系的函数。

public function marks()
    {
        return $this->hasMany('App\Models\Mark');
    } 

所以,如果要显示用户名将是他所有的标记。 然后在控制器内执行以下方式。

    public function getUserMarks(){

        $result = User::select('email', 'name')->where('email', 'usermail@example.com')->with(['marks'])->get();
        return view('welcome', compact('results'));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM