【问题标题】:Laravel 4: Eloquent relationship get all dataLaravel 4:雄辩的关系获取所有数据
【发布时间】:2014-03-26 23:41:10
【问题描述】:

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

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/ 时,名称字段已填充,但地址字段为空。如何从两个表中检索数据并放入表单进行编辑?

谢谢。

【问题讨论】:

  • 你不需要那个 'user_id' 参数

标签: php mysql laravel-4 eloquent


【解决方案1】:

您可以使用急切加载。

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

使用它,您将在检索用户时自动获取成员详细信息。然后你可以使用$user->memberdetails

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

【讨论】:

  • 感谢您的回答。但是如何将 memberdetails 数据放入表单中?表单只显示带有用户表的数据。
  • $user->memberdetails->id 等等?您的用户只有一个 memberdetails,因此您可以直接使用它。
  • 因为我正在使用刀片形式。一旦我将数据传递给它,它就会根据表单名称自动将数据填充到表单中。所以,现在只有用户表被填充到表单中。
【解决方案2】:

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

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

【讨论】:

  • 这没有利用 Eloquent 的预加载。
猜你喜欢
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 2014-07-26
  • 2020-12-02
  • 2019-07-16
  • 1970-01-01
相关资源
最近更新 更多