从集合中检索关系项

时间:2017-07-03 16:56:07

标签: laravel eloquent laravel-collection

在控制器中,我创建了一个集合:

$playershome = App\Team::where('id', $session->team1_id)->with('players')->first();

并通过以下方式致电我的观点:

        return view('member.home', compact('user', 'session', 'playershome', 'playersaway'));

在我的团队模型中我是:

    public function players(){
        return $this->belongsToMany(User::class, 'team_users');
}

创建了集合:

Team Collection

但我不知道如何检索"球员"在我看来的项目。 我试着用:

@foreach($playershome->players as $player)

但我得到了:

Invalid argument supplied for foreach()

有什么不对?

更新视图:

                                            <div class="mt-body">
                                            <h3 class="mt-body-title"> {{$session->team1Id->name}} </h3>
                                            <p class="mt-body-description"> It is a long established fact that a reader will be distracted </p>
                                            <ul class="mt-body-stats">
                                                @foreach($playershome->players as $player)

                                                    <li class="font-green">
                                                        <img src="/storage/{{$player->avatar}}"></li>
                                                @endforeach
                                            </ul>
                                            <div class="mt-body-actions">
                                                <div class="btn-group btn-group btn-group-justified">
                                                    <a href="javascript:;" class="btn">
                                                        <i class="icon-bubbles"></i> Punti </a>
                                                    <a href="javascript:;" class="btn ">
                                                        <i class="icon-social-twitter"></i> K/D </a>
                                                </div>
                                            </div>
                                        </div>

2 个答案:

答案 0 :(得分:1)

查看评论中的聊天情况,我看到您在团队表中使用了名为players的属性的相同名称,并且与用户的关系称为players 。尝试将关系重命名为其他内容,在查询中以及在foreach中更改它。

编辑:发现stackoverflow问题与您的问题相同:Laravel get Eloquent relation by same name as its attribute

答案 1 :(得分:0)

尝试这种方式

$playershome = App\Team::with('players')->where('id', $session->team1_id)->get();