2016-08-04 26 views

Antwort

0

Sie Frage ist nicht klar, wie Ihre Beziehung in den speichert Tabelle ist wie MANAGER_ID [nullable] und Sie sind für eine einzige Eloquent Beziehung für den Manager von jedem Geschäft zu fragen. Aber aus meiner Vermutungen Ihre Eloquent Modelle sollten wie diese

class Manager extends Model { 

    public function stores() { 
     return $this->hasMany(App\Store::class); 
    } 

    public function company() { 
     return $this->hasOne(App\Company::class); 
    } 
} 

Firma Klasse

class Company extends Model { 

    public function manager() { 
     return $this->belongsTo(App\Manager::class); 
    } 
} 

Shop Klasse

class Store extends Model { 

    public function manager() { 
     return $this->belongsTo(App\Manager::class); 
    } 
} 

Hoffnung diese Lösung funktioniert für Sie aussehen werden.

+0

'Store' hat auch eine' firma() 'Beziehung. Ich versuche, die 'manager()' Beziehung von 'Store' zu ​​erweitern, um entweder den' Store' 'Manager' zurückzugeben oder wenn das' null' ist, dann gebe den 'Company'' Manager' zurück – MonOve

1

Aufbauend auf Ihren Kommentar @Sanjay S

class Store extends Model { 

public function manager() { 
    return $this->belongsTo('App\Manager'); 
} 

public function getManager() { 
    if (is_null($this->manager)) { 
     return $this->company()->manager; 
    } else { 
     return $this->manager; 
} 

Dann, wenn Sie $ rufen Store-> getManager() Sie erhalten die Unternehmen, Manager, wenn Speicher manager_id null ist

+0

ja, aber das funktioniert Link ein Verhältnis? Ich suche etwas wie $ store-> manager-> name' – MonOve

+1

Sie könnten $ store-> getManager() -> name machen. getManager() gibt Ihnen nur das Manager-Objekt (aus dem Geschäft, wenn nicht null, aus dem Unternehmen, wenn Null), können Sie alle vorhandenen Eigenschaften verwenden. –