2017-09-13 2 views
0

J'essaie d'obtenir des relations de données retournées.Eloquent accès aux données connexes dans Laravel

dans l'utilisateur

public function folders() 
{ 
    return $this->hasMany("App\Folder"); 
} 

public function rootFolder() 
{ 
    return $this->folders()->where("parentid", null); 
} 

dans le dossier

public function subFolders() { 
    return $this->hasMany("App\Folder", "parentid"); 
} 

public function parentFolder() 
{ 
    return $this->belongsTo("App\Folder", "parentid"); 
} 

dans le contrôleur

$root = auth()->user()->rootFolder; 
$subs = $root->subFolders; 
foreach ($subs as $sub) { 
    echo $sub->name; 
} 

Je reçois

Property [subFolders] does not exist on this collection instance. 

Toutefois, si

$root = new Folder; 

L'exception disparaît.

Dois-je d'une manière ou d'une autre dire aux données de retour de la fonction rootFolder que vous êtes un dossier?

Répondre

0

Cette fonction retourne une requête:

public function rootFolder() 
{ 
    return $this->folders()->where("parentid", null); 
} 

Donc, celui-ci tente d'accéder à l'attribut « Sous-dossiers » d'une requête:

$root = auth()->user()->rootFolder; 
$subs = $root->subFolders; 

Ce changement travaillerait à retourner un objet Dossier:

public function rootFolder() 
{ 
    return $this->folders()->where("parentid", null)->first(); 
}