Tables:
-Incidents
--references locations thru location_id
-Locations
--references areas thru area_id
-Areas
每個區域,都有位置和事件可以發生在任何位置。數據關係模式
我該如何建立關係,以便我可以獲得雄辯的抓取,某個地區或地點的所有事件?
我必須在事件表中引用area_id嗎?
Tables:
-Incidents
--references locations thru location_id
-Locations
--references areas thru area_id
-Areas
每個區域,都有位置和事件可以發生在任何位置。數據關係模式
我該如何建立關係,以便我可以獲得雄辯的抓取,某個地區或地點的所有事件?
我必須在事件表中引用area_id嗎?
的AREA_ID
Incidents::with(array('location', function($q) use ($areaId) {
return $q->where('area_id', $areaId);
}))->get();
看「渴望裝載約束」不應該在事件表中,因爲被引用間接它已經在那裏通過LOCATION_ID。
在設計關係數據庫表結構始終適用normalization如果可能的話把你的圖式到第三範式。
究竟是什麼問題?你已經描述了你的表之間的關係。如果有具體實施的具體內容,請告訴我。
謝謝,我認爲我在正確的方向,@hannesvdvreken澄清了我應該如何從事情的雄辯orm方面接近它。 – Erocanti
最好不要在事件模型中引用area_id:如果某個位置的區域發生變化,則該事件將與錯誤的區域相關聯。 –
感謝您指出這一點 – Erocanti
您可能想查看關係類型[hasManyThrough](http://laravel.com/docs/eloquent#has-many-through),該關係類型可以將事件加入區域,同時保留與地點的中間關係。這樣,您應該可以使用'$ area-> incidents'來獲取特定區域的事件列表。 – alexrussell