当前位置: 首页 > 知识库问答 >
问题:

Laravel 7-雄辩的ORM在使用一对一关系时从2个表中获取数据

邢焕
2023-03-14

我知道如何从关系中获得Laravel雄辩的ORM数据:一对一、一对多和多对多。这里没什么大不了的。这个问题是我不知道是否可能的,或者,也许我在学习中逃脱了。

一对多关系的示例:

表“用户”

    null

表“电话”

  • ID
  • id_user
  • 电话号码

如何在运行时从两个表中获取所有字段

$results = \App\Models\Users::find(1)->phones;

我知道如何使用原始sql查询或查询生成器来获取这些信息,但是有可能通过雄辩的关系来获取它们吗?

提前谢了。

共有1个答案

郝玄天
2023-03-14

我建议通过关系对象访问关系属性。您希望将所有属性添加到phone对象中,但在这种情况下,这不是一个很好的做法。

您可以这样做:

$user = User::first();

$phones = $user->phones()->with('user')->get();

// Then you are able to access user attributes from a phone object like this:
foreach ($phones as $phone) {
    print($phone->user->name);
}

一个更高级、更快速、更恰当的解决方案是遵循本文:

$user = User::first();

$user->phones->each->setRelation('user', $user);

// Then you are able to access user attributes from a phone object like this:
foreach ($user->phones as $phone) {
    print($phone->user->name);
}
 类似资料:
  • 我有三个模型用户,电子邮件和电话和数据库表用户,电子邮件和电话与下列列提到。 现在,我在用户模型中使用以下函数,使用雄辩的ORM一对多关系建立用户与电子邮件和电话的关系 我想知道有必要使用hasMany()方法两次,或者有其他更好的方法吗?

  • 我正在与Laravel 5.4合作。我正在使用雄辩的ORM。我已经创建了以国家和州为单位的表格。二者的描述如下: 国家表: 国家表: 现在,我编写了两个方法来设置状态和国家表之间的关系。 国家型号: 状态模型: 现在,我将创建编辑功能,以便无法获取国家名称。 我已将查询写成 在这里,我得到的只有州数据和国家数据为空。 那么,为了获得州和国家数据,我应该做些什么改变呢?

  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可

  • 我有帖子表和评论表。我想得到所有的帖子与它的评论和以下返回只是帖子有评论: 更新 例如 ID帖 1个职位1 2后2 id post\u id评论 1萨姆勒大学评论 Post::with('comments')只返回有注释的帖子,它只返回第一篇帖子,因为第二篇帖子没有注释,我想获取所有帖子(有注释或没有注释)

  • 我正在创建Laravel应用程序,我正在使用雄辩的ORM从DB检索数据,同时使用JSON响应进行响应。在本例中,我通过关系(player1,matchRule…)获得与其他相关数据的匹配。 在案例A中,一切正常,并返回所有相关数据。例子: 在B的情况下,我得到的只是匹配的id,它也工作得很好。 在C的情况下,我试图获得属性,但我得到空。为什么啊?如您所见,当在A中返回整个匹配时,它存在于对象中。