2016-01-10 3 views
1

У меня есть 3 таблицы, которые я хочу отобразить, но 3 таблицы связаны.Laravel Eloquent Отношения на 3 столах

Первый стол GROUPS, второй - CONTACTS, а последний - PHONE_NUMBERS.

Я использую Laravel Framework. Проблема в том, что я не знаю красноречивого отношения к использованию, я хочу отображать содержимое таблицы GROUPS, а CONTACTS будет отображаться под номером GROUPS, а PHONE NUMBERS будет отображаться под номером CONTACTS.

Просьба сообщить мне, как это достичь. Прикрепленное изображение, как оно будет выглядеть, когда закончится.

enter image description here

+0

Человек ... вы должны действительно рассмотреть вопрос о переписывании вопроса. Если вы не можете просто выразить человеческое мышление четко, лаконично и понятно, я боюсь, что еще труднее вникать в какой-то код или запрос :) –

+0

@JimRaynor Описание может быть немного запутанным, но изображение довольно самоочевидно :). – Bogdan

+0

@Bogdan Я знаю :) Я видел изображение перед тем, как оставить комментарий. Сразу после простого редактирования вопрос уже намного читабельнее. Тем не менее, он был отредактирован сообществом, а не асером, - что я бы хотел, чтобы он взглянул на его вопрос и попытался сделать ревизию сам. –

ответ

1

Каждая группа может иметь несколько контактов, и каждый контакт может иметь несколько телефонных номеров, вам нужно определить один-ко-многим из группы контакта и контакта с номером телефона:

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 

всей необходимой информации о том, как моделировать данные с красноречивым можно найти в документации: https://laravel.com/docs/master/eloquent

+0

Большое вам спасибо @ jedrzej.kurylo –

Смежные вопросы