php - 如何使用 Laravel Eloquent 返回多个关系?

标签 php laravel laravel-5.2

我有一个名为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',);
}

Laravel Doc One-To-One Relation

关于php - 如何使用 Laravel Eloquent 返回多个关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544455/

相关文章:

php - Laravel 加载 Vagrant 文件时出错

php - 如何使用 jQuery 条件测试设置 php 变量?

php - while循环将值插入数据库?

laravel - HTTP/2 服务器推送 Assets 加载失败 (HTTP2_CLIENT_REFUSED_STREAM)

laravel - ElasticSearch关于博客名称,作者和标签的建议

php - Laravel mysql 多个操作与一个数据库实例

php - Grammar::parameterize() 必须是数组类型

php - Laravel 5.2 登录事件处理

php - 我想显示 paypal 的信用卡页面或 Paypal 登录页面(帐户登录)。我如何在 paypal 中执行此操作?

angularjs - 将 AngularJs Controller 的 token 传递给 Laravel API