我想要显示3个表,但其中3个表是相关的。
第一个表格为GROUPS
,第二个表格为CONTACTS
,最后一个表格为PHONE_NUMBERS
。
我正在使用Laravel Framework。问题是,我不知道使用的雄辩关系,我想显示GROUPS
表的内容,而CONTACTS
将显示在GROUPS
和PHONE NUMBERS
将显示在CONTACTS
下方。
请告诉我如何实现这一目标。 附件是完成时的外观图像。
答案 0 :(得分:2)
每个群组可以有多个联系人,每个联系人可以有多个电话号码,您需要定义从群组到联系人以及从联系人到电话号码的一对多关系:
class Group extends Model {
public function contacts() {
return $this->hasMany(Contact::class);
}
}
class Contact extends Model {
public function phoneNumbers() {
return $this->hasMany(PhoneNumber::class);
}
}
通过定义关系,您将能够加载群组,联系人和联系人。电话号码:
$groups = Group::with(['contacts', 'contacts.phoneNumbers'])->get();
这将为您提供一组群组。每个组都将在其联系人属性中包含一组联系人。每个联系人都会在 phoneNumbers 属性中包含电话号码集合。通过迭代这些集合,您应该能够获得渲染所需结构所需的数据,例如:
@foreach($groups as $group)
{{ $group->name }}
@foreach ($group->contacts as $contact)
{{ $contact->name }}
@foreach ($contact->phoneNumbers as $number)
{{ $number->number }}
@endforeach
@endforeach
@endforeach
有关如何使用Eloquent建模数据的所有必要信息,请参阅文档:https://laravel.com/docs/master/eloquent