【发布时间】:2014-03-31 12:46:52
【问题描述】:
Tables:
-Incidents
--references locations thru location_id
-Locations
--references areas thru area_id
-Areas
每个区域都有位置,事件可能发生在任何位置。
我如何设置关系,以便我可以有雄辩的抓取,一个区域或位置的所有事件?
我是否还必须引用事件表中的 area_id?
【问题讨论】:
-
事件模型中最好不要引用area_id:如果位置的区域发生变化,事件会链接到错误的区域。
-
感谢您指出这一点
-
您可能希望查看关系类型hasManyThrough,它能够将事件加入区域,同时保持与位置的中间关系。这样,您应该能够使用
$area->incidents来简单地获取给定区域的事件列表。 -
谢谢@alexrussell,我知道它现在如何适用于这种情况了
-
显然,这种关系的反面并不那么简单,但它几乎一样简单:只需执行
$incident->location->area即可获取事件所在的区域。
标签: mysql database laravel eloquent