2014-02-25 23 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