2016-07-20 49 views
0

ich folgende Tabellenstruktur habe:Eloquent Beziehung in Laravel

Table Name - Users 
    Column: id, name, email, etc 

Table Name - Plugins 
    Column: id, theme_id, type_id, code, 

Table Name - Templates 
    Column: id, theme_id, user_id, templatedata 

Table Name - Userplugins 
    Column: id, user_id, plugins_id, contents 

Jetzt bin ich die Strecke mit der ID der templates Aufruf, bei der templatedataJSON Daten hat, ich bin in der Lage zu bekommen Pluginscode durch folgenden Code in meiner Blade-Datei als:

@foreach($gettemplate as $renderer) 

    {!! $plugins->find($renderer)->code !!} 

@endforeach 

aber ich bin nicht in der Lage Inhalte in der UserPlugins Tabelle zu holen. Im Anschluss ist mein controller wo ich versuche, dies zu tun:

public function get_template($id) 
{ 
    $template = Template::findOrFail($id); 
    $gettemplate = json_decode($template->templatedata); 
    $plugins = Plugins::all(); 
    $user = User::findorFail($id); 
    return $user->userplugins()->contents; 
    //return view('nitseditor.test', ['plugins' => $plugins, 'gettemplate' => $gettemplate, 'user' => $user]); 
} 

Ich habe gerade die Ausgabe zu überprüfen, meine Ansicht Kommentar gesetzt. Ich habe die relationship in der model meine App/User.php Datei definiert enthält:

public function userplugins(){ 

    return $this->hasMany('App\UserPlugin'); 
} 

Und in App\UserPlugin.php Datei Ich habe:

protected $fillable = [ 

    'contents', 

]; 

ich die folgende Fehlermeldung erhalten:

Undefined property: Illuminate\Database\Eloquent\Relations\HasMany::$contents

Bitte helfen Sie mir, Danke.

Antwort

1

In der folgenden Zeile:

return $user->userplugins()->contents; 

Wenn Sie $user->userplugins() rufen, dass Sie eine Beziehung Methode aufrufen bedeuten. Es wird Eloquent Collection oder Eloquent Object nicht für dich zurückgeben.

Sie benötigen

$user->userplugins 

nennen Sammlung von UserPlugin

jedoch zu erhalten, wenn Sie

return $user->userplugins->contents; 

rufen Sie Fehler erhalten wird, becauese return $user->userplugins eine Eloquent Collection ist, können Sie bekomme keinen Inhalt davon.

Sie können den Inhalt eines bestimmten UserPlugins abrufen. Zum Beispiel das erste UserPlugin des Benutzers wie:

return $user->userplugins()->first()->contents; 
Verwandte Themen