2017-12-28 16 views
0

Ich habe die nächste Struktur:Eloquent Laravel -> Eager Loading

Modell Aufruf Inhalt

public function credits(){ 

    return $this->belongsToMany('App\models\Credit'); 
} 

Modell Anruf Kredit

public function content() 
{ 
    return $this->belongsToMany('App\models\Content'); 
} 

Was ich bin triying zu tun ist, extrahieren alle Credits von einem conten t, aber die Auswahl nur die Spalten, die ich will, mit dem folgenden Code:

$credits2=$this->content::with(array('credits'=>function($query){ 
     $query->select('id','department','job'); 
}))->where('id',$id_content)->get(); 

Das Problem, das ich habe, ist, dass, wenn ich den gesamten Code auszuführen ist das Ergebnis:

[] 

aber wenn ich eine normale Abfrage in MySQL mache, kann ich herausfinden, dass für den Film Credits vorhanden sind.

Ich habe diesen Code aus anderen Foren und Stackoverflow Post extrahiert.

+0

Es gibt offenbar keine 'content' mit' id = $ id_content' in DB ist. –

+0

da ich einen Ausdruck von $ id_content mache, suche ich manuell in der Datenbank und es gibt mir den Film zurück – Ratchet

+0

Setzen Sie diesen Code vor Ihre Abfrage 'dd ($ this-> content :: find ($ id_content));'. Was ist die Ausgabe? –

Antwort

0

Es gibt eine weitere einfache Möglichkeit, Spalten zu spezifizieren, ohne Verschluss mit:

$credits2 = $this->content::with('credits:credits.id,department,job') 
        ->find($id_content->id); 
0

Das Problem war, dass $ id_content ein Ergebnis aus einer früheren Abfrage war, also wenn ich $ id_content setzte nicht funktioniert, denn das Ich muss auf die Spalte zugreifen.

Und die Lösung ist:

$credits2=$this->content::with(array('credits'=>function($query){ 
    $query->select('id','department','job'); 
}))->where('id',$id_content)->get(); 
Verwandte Themen