2014-02-25 61 views
6

我有2個關係數據表;用戶表和memberdetails表。Laravel 4:雄辯的關係得到所有數據

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'); 
    } 
} 

當我嘗試檢索數據,與$data = User::find($id);我只能從用戶表中的數據。我的刀片形式的

例子:

{{-- 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')) }} 

當我訪問,localhost/user/2/edit/,名字字段被填充,但地址字段爲空。如何從兩個表中檢索數據並將其放入表單中進行編輯?

謝謝。

+0

你不需要'user_id'參數 – malhal

回答

0

讓用戶實例後,訪問的關係,那麼你就可以訪問其他類屬性

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

這不利用Eloquent的急切加載。 – CommandZ

22

你可以使用預先加載。

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

使用此功能,您將在檢索用戶時自動獲取會員詳細信息。然後你可以使用$user->memberdetails

使用急切加載,你只對數據庫做一個查詢,所以它應該是首選的方法。如果您不使用with('memberdetails'),則在訪問會員詳細信息時將執行第二個查詢。

+0

感謝您的回答。但是,我怎樣才能將成員資料數據放入表單中?表單只顯示帶有用戶表的數據。 – user1995781

+0

$ user-> memberdetails-> id等等?您的用戶只有一個會員詳細資料,所以您可以直接使用它。 – Gab

+0

因爲我正在使用刀片形式。一旦我傳遞了數據,它會自動將數據填入基於表單名稱的表單中。所以,現在只有用戶表被填充到表單中。 – user1995781