如何与Laravel Eloquent回归多重关系?

Rad*_*ity 5 php laravel laravel-5.2

我有一张叫做的桌子users.每个用户都有不同的东西:

  • 国家
  • 设备
  • 电脑
  • 类别

我已经为上述"事物"中的每一个创建了一个表格.类似如下:

1 | United States
2 | United Kingdom
3 | Australia
4 | Canada
5 | Italy
Run Code Online (Sandbox Code Playgroud)

等等...

我将这些值存储在users表中,如下所示:

ID | Country | Device | Computer | Category |
---|---------|--------|----------|----------|
1  |       3 |      2 |        6 |        2 |
2  |       4 |      3 |        9 |        1 |
Run Code Online (Sandbox Code Playgroud)

等等...

现在,上述每个数字都与相应表格的ID相关联.

我想要的是做一个Eloquent Query并users从他们的帮助表中搜索所有和'替换'它们相应的值.

我正在考虑hasOne()users表格中的每一个事情做一个雄辩的关系,但后来我不确定如何立即获得/调用它们.

有人可以帮我解决这个问题吗?

And*_*lan 12

$model = Model::with('relatedModel', 'relatedModelTwo')->get();
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,它可能是这样的.如果您只想要与之一起返回一个关系user,请删除其他关系.

$user = User::with('country', 'Device', 'Computer', 'Category')->get();
Run Code Online (Sandbox Code Playgroud)

当你dd($user),你应该在relations数组属性中看到相关的模型.

要从那里访问关系的属性,它就是简单的

$user->device->deviceAttribute

编辑评论:

Eloquent将假设外键使用Model名称.因此,如果您的user表具有id列,则假定device表上将有一个列称为user_id.如果你这样做了,那么你就完成了,不需要做任何事情.

如果您将列命名为将模型与其他内容相关联,则需要将其作为关系方法中的第二个参数传递.

public function device()
{
    return $this->hasOne('App\Device', 'foreign_key_here',);
}
Run Code Online (Sandbox Code Playgroud)

相反,如果您想获取设备所属的用户,Eloquent将尝试user_id将设备表上的id列与用户表上的列进行匹配.和以前一样,如果您使用不同的列来关联它们,请将外键声明为第二个参数.

public function user()
{
    return $this->belongsTo('App\User', 'foreign_key_here',);
}
Run Code Online (Sandbox Code Playgroud)

Laravel Doc一对一关系