我有一个名为users
的表。这些用户中的每一个都有不同的东西:
- 国家
- 设备
- 电脑
- 类别
我已经为上面的每一个“事物”创建了一个表格。类似以下内容:
1 | United States
2 | United Kingdom
3 | Australia
4 | Canada
5 | Italy
等...
我将这些值存储在用户表中,如下所示:
ID | Country | Device | Computer | Category |
---|---------|--------|----------|----------|
1 | 3 | 2 | 6 | 2 |
2 | 4 | 3 | 9 | 1 |
等...
现在上面的每个数字都与相应表的 ID 相关联。
我想要的是做一个 Eloquent 查询并搜索所有 users
并从他们的帮助表中“替换”他们的相应值。
我正在考虑为 users
表中的每一件事做一个 hasOne()
Eloquent 关系,但是我不确定如何获取/调用他们一次。
谁能帮我解决这个问题?
最佳答案
$model = Model::with('relatedModel', 'relatedModelTwo')->get();
所以在你的情况下,它可以是这样的。如果您只想返回一个与 user
的关系,请移除其他关系。
$user = User::with('country', 'Device', 'Computer', 'Category')->get();
当你dd($user)
时,你应该在relations
数组属性中看到相关模型。
要从那里访问关系的属性,只需
$user->device->deviceAttribute
编辑评论:
Eloquent 会假定外键使用模型名称。因此,如果您的 user
表有 id
列,它假定 device
表上会有一个名为 user_id
的列.如果您这样做了,那么您已经准备就绪,无需执行任何操作。
如果您将列命名为关联模型,则需要将其作为关联方法中的第二个参数传递。
public function device()
{
return $this->hasOne('App\Device', 'foreign_key_here',);
}
相反,如果你想获取设备所属的用户,Eloquent 会尝试将设备表上的 user_id
列与用户上的 id
列匹配 table 。和以前一样,如果您使用不同的列来关联它们,请将外键声明为第二个参数。
public function user()
{
return $this->belongsTo('App\User', 'foreign_key_here',);
}
关于php - 如何使用 Laravel Eloquent 返回多个关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544455/