2016-02-15 8 views
5

トラックが割り当てられているジャンルのリストを取得しようとしていますが、whereHASの雄弁なクエリを使用していますが、Eloquent Laravel - 関係が存在する場合のみ結果を取得します。

私が持っている、私は私の空で、現在、私のしますprint_rは、以下を返すことを承知している以下の

//model 
public function workingGenre() { 
    $this->whereHas('tracks', function($query) { 
     $query->where(''); 
    }); 

    return $this->tracks()->first(); 
} 

//controller (where i am passing variables etc) 
$genres = Genre::with('tracks')->get(); 

//my view 
@foreach($genres as $genre) 
    {{print_r($genre->workingGenre())}} 
@endforeach 

         1 
             App\Track Object 
(
[table:protected] => Track 
[fillable:protected] => Array 
    (
     [0] => id 
     [1] => GenreId 
     [2] => Title 
     [3] => CreatedById 
     [4] => SelectedCount 
     [5] => ProducerName 
     [6] => SourceId 
     [7] => Published 
    ) 

[connection:protected] => 
[primaryKey:protected] => id 
[perPage:protected] => 15 
[incrementing] => 1 
[timestamps] => 1 
[attributes:protected] => Array 
    (
     [id] => 6 
     [GenreId] => 4 
     [Title] => Guns Up 
     [CreatedById] => 1 
     [SelectedCount] => 0 
     [ProducerName] => 
     [SourceId] => 1 
     [Published] => 1 
    ) 

[original:protected] => Array 
    (
     [id] => 6 
     [GenreId] => 4 
     [Title] => Guns Up 
     [CreatedById] => 1 
     [SelectedCount] => 0 
     [ProducerName] => 
     [SourceId] => 1 
     [Published] => 1 
    ) 

[relations:protected] => Array 
    (
    ) 

[hidden:protected] => Array 
    (
    ) 

[visible:protected] => Array 
    (
    ) 

[appends:protected] => Array 
    (
    ) 

[guarded:protected] => Array 
    (
     [0] => * 
    ) 

[dates:protected] => Array 
    (
    ) 

[dateFormat:protected] => 
[casts:protected] => Array 
    (
    ) 

[touches:protected] => Array 
    (
    ) 

[observables:protected] => Array 
    (
    ) 

[with:protected] => Array 
    (
    ) 

[morphClass:protected] => 
[exists] => 1 
[wasRecentlyCreated] => 
) 

**And so on** 

右方向へのプッシュは素晴らしいことだ、Iこの雄弁なものは本当に便利だが、私の頭を包み込むのは難しい。

おかげ

答えて

6
$genres = Genre::with('tracks')->has('tracks')->get(); 
    foreach($genres as $genre) 
     //do what you need 
    endforeach 

あなたは、彼らがトラックとイーガーロードそれらを持っている場合にのみ、ジャンルを取得します。この方法で、あなたは熱心な負荷が私はひどく私の質問に言葉で表現だと思う::with('tracks')

+0

を削除したくない場合は、私が」勝ちましたnullフィールドを持っているので、私はそれらに関連するトラックを持つジャンルだけを表示したいと思います。 – ExohJosh

+0

あなたのトラックテーブルには 'genre_id'がありますか? – Froxz

+0

モデル関係を設定しているので、 public function genre(){ return $ this-> belongsTo(\ App \ Genre :: class、 'GenreId'、 'id'); } – ExohJosh

関連する問題