Laravel 4:雄辩的关系获取所有数据

use*_*781 6 php mysql eloquent laravel-4

我有2个关系数据表; users表和memberdetails表.

Users.php

class Users extends Eloquent{

    public function memberdetails()
    {
        return $this->hasOne('Memberdetails','user_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

Memberdetails.php

class Memberdetails extends Eloquent{

    public function user()
    {
        return $this->belongsTo('Users','user_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试检索数据时,$data = User::find($id);我只从users表中获取数据.

刀片形式示例:

{{-- 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')) }}
Run Code Online (Sandbox Code Playgroud)

当我访问时,localhost/user/2/edit/会填充名称字段,但地址字段为空.如何从两个表中检索数据并将其放入表单进行编辑?

谢谢.

Gab*_*Gab 22

您可以使用预先加载.

$user = User::with('memberdetails')->find($id);
Run Code Online (Sandbox Code Playgroud)

使用此选项,您将在检索用户时自动获取memberdetails.然后你可以使用$user->memberdetails

使用预先加载,您只对DB执行一次查询,因此它应该是首选方式.如果您不使用with('memberdetails'),则在访问memberdetails时将执行第二个查询.


mar*_*nuy 0

获取用户实例后,访问关系,然后就可以访问其他类属性

$user = User::find($id);
$userData = $user->memberdetails;
Run Code Online (Sandbox Code Playgroud)