2015-12-22 68 views
0

我有3個模型Tracktype,曲目和Subgenres。關係是這樣的。一個Tracktype有很多軌道,一個軌道可以有許多子類型。但軌道只能有我已經定義的關係像這些渴望加載兩個表與多個Realtionships laravel 5

/** 
* Gets the tracks lists Associated with a track type 
* 
* @return \Illuminate\Database\Eloquent\Relations\hasMany 
*/ 
public function tracks() 
{ 
    return $this->hasMany('App\Tracks', 'id', 'id'); 
} 


/** 
* Get the Lists of tracks Associated with the Subgenre ID 
* 
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany 
*/ 
public function tracks() 
{ 
    return $this->belongsToMany('App\Tracks', 'subgenre_track', 'subgenre_id', 'track_id'); 
} 

我試圖像這樣一個履帶式

App\TrackType::with(['tracks.subgeneres' => function ($query) { 
    $query->where('name', 'Trans'); 
}])->where('name', 'Single')->get(); 

但它不返回正確的結果

Array 
(
    [0] => Array 
     (
      [query] => select * from `tracktype` where `name` = ? 
      [bindings] => Array 
       (
        [0] => Single 
       ) 

     [time] => 0.55 
    ) 

[1] => Array 
    (
     [query] => select * from `tracks` where `tracks`.`id` in (?) 
     [bindings] => Array 
      (
       [0] => 1 
      ) 

     [time] => 0.45 
    ) 
) 

我需要的是讓這些匹配單Tracktype匹配跨所有曲目和Subgeneres。我有Tracktype表和Subgeneres表以及相關的數據透視表

我已經多次閱讀文檔,並做了一些Google搜索,但沒有運氣。如果任何人可以指出我如何定義這些關係並解釋一點點,這將是很多的幫助:)

回答

0

通過將軌道類型中的方法從hasMany更改爲belongsToMany來解決此問題。就是這樣。使用相同的查詢:)