2017-09-22 2 views
0

Ich habe 2 Modelle erstellt, "Post" und "Kategorie". Das ist eine viele zu viele Beziehung, funktioniert super.Scope-Abfrage in einer vielen zu vielen Beziehung

Meine Tabellen sind die folgenden:

  • alex_blog_posts: wo Beiträge mit Spalten wie „Titel“ gespeichert sind, „veröffentlicht“ etc ...
  • alex_blog_categories: wo Kategorien mit Spalten wie „Titel gespeichert sind, “, "pARENT_ID" etc ...
  • alex_blog_posts_categories: in dem die Beziehung zwischen den Pfosten und Kategorien mit Spalten gespeichert ist "post_id", "category_id"

Lassen Sie uns assu Ich möchte mich alle Beiträge filtern, die mit dem Namen einer Kategorie zugeordnet sind: „Kategorie 1“

public function scopeFilterCategory($query) { 
    $query->join(????); // My problem is to replace the ??? 
    $query->where('title', '=', 'Category 1'); 
    return $query; 
} 

ich genug bin nicht vertraut mit Oktober und Laravel noch und ich bin hier stecken. Wahrscheinlich sehr einfach für Laravel Experte, aber ich brauche ein konkretes Beispiel für etwas arbeiten Ursache alle Dinge, die ich versucht, fehlgeschlagen:/

Danke für Ihre Hilfe

Antwort

0

Laravel haben die „whereHas“:

https://laravel.com/docs/5.5/eloquent-relationships#querying-relationship-existence

Auf der Post-Modell müssen Sie die Schreib diese Abfrage:

$posts = Post::whereHas($relationName, function ($query) { 
    $query->where('title', =, 'Category 1'); 
})->get(); 

$ relationName - sollte der Name des functio sein n, die die Beziehung in Ihrem Modell definieren (etc: "Kategorien")

+0

Vielen Dank, es hat wie ein Zauber funktioniert! –

Verwandte Themen