2015-02-17 37 views
0

好吧,這可能不是世界上最大的問題,我敢肯定有人能幫我解決我出錯的地方。下面的幾個事實之前,我給我的問題:對於更復雜的表格結構的雄辯/查詢生成器

  • Laravel 5 & MySQL的
  • 我有3個主要的表:meetupseventslocations
  • 我也是一個樞軸表: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::並運行自定義查詢嗎?

+2

你有模特適當的設置,與上述的關係?如果是這樣,你應該可以讓Eloquent用 'Location :: where(...) - > with('events.meetups') - > get();' 這將根據Location-> events()關係加入您的Event模型,並基於Event-> meetups()關係加入Meetup模型。 – iavery 2015-02-17 23:07:06

+0

謝謝@iavery,我確實必須將事件和聚會之間的關係改爲「belongsToMany()」,但似乎已經排序了我的問題。雄辯是如此的酷!再次感謝你的幫助! – 2015-02-18 22:56:28

+0

這是相當令人難以置信的令人敬畏! :) – iavery 2015-02-19 01:20:43

回答

1

見@ iavery的評論,似乎以下工作,當你有所有belongsToMany關係:

Location::where(...)->with('events.meetups')->get();