3 个表上的 Laravel Eloquent 关系

Kel*_*lex 1 php laravel eloquent laravel-5

请我有 3 个表要显示,但其中 3 个表是相关的。

第一个表是GROUPS,第二个是CONTACTS,最后一个是PHONE_NUMBERS

我正在使用 Laravel 框架。问题是,我不知道佞关系到使用,我想给的显示内容GROUPS表,同时CONTACTS会显示下GROUPSPHONE NUMBERS会下的显示CONTACTS

请建议我如何实现这一目标。附件是完成后的外观图像。

在此处输入图片说明

jed*_*ylo 5

每个组可以有多个联系人,每个联系人可以有多个电话号码,您需要定义组到联系人和联系人到电话号码的一对多关系:

class Group extends Model {
  public function contacts() {
    return $this->hasMany(Contact::class);
  }
}

class Contact extends Model {
  public function phoneNumbers() {
    return $this->hasMany(PhoneNumber::class);
  }
}
Run Code Online (Sandbox Code Playgroud)

定义关系后,您将能够加载组、他们的联系人和联系人的电话号码:

$groups  = Group::with(['contacts', 'contacts.phoneNumbers'])->get();
Run Code Online (Sandbox Code Playgroud)

这将为您提供一组组。每个组都将在其联系人属性中包含一组联系人。每个联系人都将在其phoneNumbers属性中包含电话号码集合。通过遍历这些集合,您应该能够获得呈现所需结构所需的数据,例如:

@foreach($groups as $group)
  {{ $group->name }}
  @foreach ($group->contacts as $contact)
    {{ $contact->name }}
    @foreach ($contact->phoneNumbers as $number)
      {{ $number->number }}
    @endforeach
  @endforeach
@endforeach
Run Code Online (Sandbox Code Playgroud)

有关如何使用 Eloquent 对数据建模的所有必要信息都可以在文档中找到:https : //laravel.com/docs/master/eloquent