我有一张名为users
的表格。每个用户都有不同的东西:
我为上述“事物”中的每一个创建了一个表格。类似如下:
1 | United States
2 | United Kingdom
3 | Australia
4 | Canada
5 | Italy
等...
我将这些值存储在users表中,如下所示:
ID | Country | Device | Computer | Category |
---|---------|--------|----------|----------|
1 | 3 | 2 | 6 | 2 |
2 | 4 | 3 | 9 | 1 |
等...
现在,上述每个数字都与相应表格的ID相关联。
我想要的是做一个Eloquent Query并从他们的帮助表中搜索所有users
和'替换'它们对应的值。
我正在考虑为hasOne()
表中的每一项事做一个users
雄辩的关系,但后来我不确定如何一次性调用它们。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:11)
$model = Model::with('relatedModel', 'relatedModelTwo')->get();
所以在你的情况下,它可能是这样的。如果您只想要使用user
返回一个关系,请删除其他关系。
$user = User::with('country', 'Device', 'Computer', 'Category')->get();
当您dd($user)
时,您应该会在relations
数组属性中看到相关模型。
要从那里访问关系的属性,它只是
$user->device->deviceAttribute
编辑评论:
Eloquent将假设外键使用Model名称。因此,如果您的user
表格中包含id
列,则会假定device
表格中有一列名为user_id
。如果你这样做了,那么你就定了,不需要做任何事情。
如果您将列命名为将模型与其他内容相关联,则需要将其作为关系方法中的第二个参数传递。
public function device()
{
return $this->hasOne('App\Device', 'foreign_key_here',);
}
相反,如果您想获取设备所属的用户,Eloquent将尝试将设备表上的user_id
列与用户表上的id
列相匹配。和以前一样,如果您使用不同的列来关联它们,请将外键声明为第二个参数。
public function user()
{
return $this->belongsTo('App\User', 'foreign_key_here',);
}
答案 1 :(得分:0)
您正在寻找:$books = App\Book::with('author', 'publisher')->get();
Check out the documentation for eager loading multiple relationships.