2016-08-10 6 views
0

Ich habe zwei Modelle. d.h. Posts und Tags.Wo Zustand auf Laravel Modell Beziehung

Beitrag Modell

public function tags() 
{ 
    return $this->belongsToMany('App\Models\Tag', 'tbl_post_tags', 'in_post_id', 'in_tag_id'); 
} 

Tag Modell

public function posts() 
{ 
    return $this->belongsToMany('App\Models\Post', 'tbl_post_tags', 'in_tag_id', 'in_post_id'); 
} 

Ich will diese Beiträge holen, die php Tag haben.

Das habe ich bis jetzt gemacht.

Search-Controller

Post::with(['tags'])->skip(0)->take(5)->get(); 

Ich erhalte ersten fünf Beiträge aus der Tabelle. Aber es gibt einen Beitrag in dieser Liste, der kein PHP Tag hat. So nach meiner Anforderung muss ich nächsten Beitrag von der Tabelle bekommen, die PHP Tag haben.

Ich kann kein Dokument auf der offiziellen Website von Laravel finden. Wenn jemand die Antwort kennt, wird es geschätzt.

Antwort

1

Angenommen, Sie suchen die Tags nach dem Namen, hier ist der Code.

Post::with(['tags'])->whereHas('tags', function($query){ 
    $query->where("name", 'PHP'); 
})->skip(0)->take(5)->get(); 
+0

Ich erhalte 'Argument 2 übergeben \ Database \ Eloquent \ Builder :: whereHas() muss eine Instanz von Schließung, keine given' Fehler wie pro Ihre Lösung Illuminate –

1
Post::whereHas(['tags' => function($q) use($name){ 
    $q->where('name', $name); // $name = 'PHP' 
}])->take(5)->get();