2017-06-06 1 views
1

Ich versuche, Daten aus einer Tabelle, mit der ich keine direkte Beziehung habe, aus dem Modell abzurufen, das ich gerade verwende.Kann ich Laravels eloquente hasManyThrough-Beziehung für meinen speziellen Fall verwenden?

Meine Datenstruktur:

Tabelle: Beiträge

  • id - integer
  • Titel - String

Tabelle: post_stacks

  • id - integer
  • post_id - integer
  • stack_id - integer

Tabelle: Stapel

  • id - integer
  • Körper - String
  • url - String

Mein eloquent Modell ist von der post.php (Beiträge Tabelle) und ich versuche, alle Stapel zu meinem Beitrag verbunden zu bekommen (von den Stapeln Tabelle). Ich möchte meine Beziehungen nur für Post.php und nicht für meine Pivot-Tabelle (post_stacks) deklarieren. Ich habe versucht, hasManyThrough zu verwenden, aber ich kann es nicht zum Funktionieren bringen?

public function img() 
    { 
     return $this->hasManyThrough(\App\Stack::class, \App\PostStack::class, 'post_id', 'stack_id', 'id'); 
    } 

Würde jemand wissen, wie ich meine gewünschten Daten abrufen kann? Vielen Dank!

Antwort

1

Können Sie versuchen, unter Beziehungen auf Ihr Posts-Modell zu setzen.

public function stacks() 
{ 
    return $this->hasManyThrough(
     'App\Stacks', 'App\PostStacks', 
     'post_id', 'id', 'id' 
    ); 
} 

auch einen Blick auf diese haben, https://laravel.com/docs/5.4/eloquent-relationships#has-many-through

Nach diesem doc, Das dritte Argument in hasManyThrough ist der Name des Fremdschlüssels auf dem Zwischenmodell. In unserem Fall 'post_id' ist der Fremdschlüssel auf post_stack, die direkte Beziehung zu posts hat.

Viertes Argument ist der Name des Fremdschlüssels im endgültigen Modell. dh 'id' auf stacks. das hat Beziehung zu post_stacks('post_id'). Das fünfte Argument ist der lokale Schlüssel. dh id von Pfosten

Verwandte Themen