【发布时间】:2015-04-18 19:15:10
【问题描述】:
好的,所以这可能不是世界上最大的问题,我相信有人能够帮助我解决我的问题所在。在我解决我的问题之前,这里有一些事实:
- Laravel 5 & mysql
- 我有 3 个主表:
meetups、events和locations - 我还有一个数据透视表:
event_location - 聚会
hasMany活动 - 活动
belongsTo聚会 - 活动
belongsToMany地点 - 地点
belongsToMany活动
问题
我目前正在尝试搜索 位置(通过表单 - 即 Input::get('data')),这将显示所有具有该 的 事件位置,以及与该事件相关的所有聚会。
在我的SearchController 中,我有以下内容:
// Get the searched data
$data = Input::get('data');
// Get all location, which are 'LIKE' the inputted data.
$locations = Location::where('title', 'LIKE', '%'. $data .'%')->get();
在这一点上,我不确定如何继续。我需要从每个位置访问事件,之后我需要获取与该位置对应的聚会,但我不知道如何去做。这可以用joins() 完成,还是我会遍历$locations 变量并为每个变量获取->events 并将它们放入一个数组中?或者,我应该使用DB:: 并运行自定义查询吗?
【问题讨论】:
-
您是否已经正确设置了具有上述关系的模型?如果是这样,您应该能够让 Eloquent 使用类似于
Location::where( ... )->with('events.meetups')->get();的方式完成所有繁重的工作,这将基于 Location->events() 关系加入您的 Event 模型,以及基于 Event- 的 Meetup 模型>meetups() 关系。 -
感谢@iavery,我确实必须将活动和聚会之间的关系更改为
belongsToMany(),但这似乎解决了我的问题。雄辩太酷了!再次感谢您的帮助! -
这真是太棒了! :)