2014-02-25 31 views
6

Ich habe 2 Beziehung Datentabelle; Benutzer Tabelle und Memberdetails Tabelle.Laravel 4: Eloquent Beziehung erhalten alle Daten

users.php

class Users extends Eloquent{ 

    public function memberdetails() 
    { 
     return $this->hasOne('Memberdetails','user_id'); 
    } 
} 

Memberdetails.php

class Memberdetails extends Eloquent{ 

    public function user() 
    { 
     return $this->belongsTo('Users','user_id'); 
    } 
} 

Wenn ich versuche, Daten abzurufen, mit $data = User::find($id); ich nur Daten von den Benutzern Tisch.

Beispiel meiner Klingenform:

{{-- User's Name, stored on user table --}} 
{{ Form::text('name',null, array('id'=>'name','class'=>'form-control','required')) }} 

{{-- User's address, stored on member table --}} 
{{ Form::text('address',null, array('id'=>'address','class'=>'form-control','required')) }} 

Als ich besuchen, localhost/user/2/edit/ wird das Namensfeld bevölkert, aber Adressfeld ist leer. Wie kann ich Daten aus beiden Tabellen abrufen und in ein Formular zur Bearbeitung einfügen?

Vielen Dank.

+0

Sie brauchen diesen 'user_id' Parameter nicht – malhal

Antwort

0

Nachdem die Benutzerinstanz erhalten, rufen Sie die Beziehung, dann können Sie die anderen Klasseneigenschaften zugreifen

$user = User::find($id); 
$userData = $user->memberdetails; 
+0

Dies nutzt nicht die Vorteile von Eloquent eifrig laden. – CommandZ

22

Sie könnten eifrig Laden verwenden.

$user = User::with('memberdetails')->find($id); 

Mit dieser erhalten Sie automatisch die Mitgliederdetails beim Abrufen des Benutzers. Dann können Sie verwenden $user->memberdetails

Mit Eager laden, tun Sie nur eine Abfrage an die DB, so sollte es der bevorzugte Weg sein. Wenn Sie nicht die with('memberdetails') verwenden, führen Sie eine zweite Abfrage beim Zugriff auf die Memberdetails.

+0

Danke für Ihre Antwort. Aber wie kann ich die Mitgliedsdaten in das Formular schreiben? Das Formular erscheint nur Daten mit Benutzertabelle. – user1995781

+0

$ user-> memberdetails-> id und so weiter? Ihr Benutzer hat nur ein Mitglied, so dass Sie es direkt verwenden können. – Gab

+0

Weil ich mit der Klingenform arbeite. Sobald ich die Daten übergeben habe, füllt es automatisch die Daten in das Formular basierend auf dem Formularnamen. Jetzt wird nur die Benutzertabelle in das Formular eingefügt. – user1995781

Verwandte Themen