在Show Blade中显示多对多

时间:2018-06-07 14:42:13

标签: php laravel

我有一个成员,兴趣和兴趣成员表,其中1个成员可以有多个兴趣,1个兴趣可以由多个成员共享。测试interests_members表时更新100%。

interests_members表包含以下列:

  1. ID
  2. interest_id - >外键
  3. member_id - >外键
  4. 我的问题是,我不知道使用什么语法来显示展示刀片中每个成员的兴趣?需要帮助解决下面代码块中的兴趣字段。

    show.blade.php:

    <h1>Member Details: </h1>
    <p>Name: {{$member->name}}</p>
    <p>Surname: {{$member->surname}}</p>
    <p>ID Nr: {{$member->id_number}}</p>
    <p>Language: {{$member->language->name}}</p> 
    <p>Interest: {{??????}}</p>
    

3 个答案:

答案 0 :(得分:2)

确保您的关系到位:

class Member extends Model {
    public function interests() {
        return $this->hasMany(Interest::class);
    }
}

class Interest extends Model {
    public function members() {
        return $this->belongsToMany(Member::class);
    }
}

这意味着您可以在视图中执行(示例):

<p>Interests:</p>
<ul>
    @foreach($member->interests as $interest)
        <li>{{ $interest->name }}</li>
    @endforeach
</ul>

这解释了多对多关系的工作原理:https://laravel.com/docs/5.6/eloquent-relationships#many-to-many

答案 1 :(得分:0)

您可以根据documentations

在兴趣和会员模型中定义关系

在定义关系后,您可以使用$yourMember->interests()

获得会员的兴趣

答案 2 :(得分:-1)

class MeemberInterest extends Model {
    public function interest() {
        return $this->hasMany('App\Interest');
    }
    public function member() {
        return $this->hasMany('App\Member');
    }
}

class Member extends Model {
    public function interests() {
        return $this->hasMany('App\MemberInterest')->with('interest');
    }
}

class Interest extends Model {
    public function members() {
        return $this->belongsToMany(Member::class);
    }
}