2016-01-10 35 views
1

請讓我有3張桌子,我想顯示,但3個表是相關的。Laravel 3張桌子上的雄辯關係

第一張表是GROUPS,第二張是CONTACTS,最後一張是PHONE_NUMBERS

我正在使用Laravel框架。問題是,我不知道使用的雄辯關係,我想顯示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 –