2017-07-04 7 views
0

Ich Abrufen eine Beziehung:Laravel 'mit' und verschachtelte Beziehung

$requirements = Requirement::with([ 
      'countryMatch', 
      'applier', 
      'doc' ])->get(); 

und mein Modell Anforderungen enthält:

public function doc() 
{ 
    return $this->belongsTo(Doc::class); 
} 

Gerade jetzt alles in Ordnung.

Da mein Doc Modell seine eigene Beziehung hat:

public function translation($language = null) 
{ 
    if ($language == null) { 
     $language = /*App::getLocale()*/'en'; 
    } 
    return $this->hasMany('App\DocTranslation')->where('language', '=', $language); 
} 

Ich möchte diese Beziehung direkt in der ersten abzurufen ‚mit‘ Anweisung, so etwas wie folgt aus:

$requirements = Requirement::with([ 
     'countryMatch', 
     'applier', 
     'doc->translation()' ])->get(); 

aber ich erhalten Fehler:

Call to undefined relationship [doc->translation()] on model [App\Requirement]. 

Das liegt daran, Relation Übersetzung ist in Doc-Modell nicht in der Anforderung.

Antwort

0

Verschachtelte with() Aufrufe verwenden Punktnotation, nicht Objektnotation. Ändern Sie sie stattdessen in 'doc.translation'. Beachten Sie jedoch, dass ich nicht sicher bin, ob Sie Eager-Relationen laden können, die Anwendungslogik enthalten.

0

für eine verschachtelte Beziehung Verwendung dot wie announcement.advertiser

$requirements = Requirement::with([ 'countryMatch', 'applier', 'doc', 'doc.translation'])->get();