【问题标题】:laravel mongodb nested collection relationshiplaravel mongodb 嵌套集合关系
【发布时间】:2016-12-14 07:16:14
【问题描述】:

我正在使用 laravel mongodb 集合,因为我有一些关系问题 这是我的用户集合,其中用户有多个地址,地址保存在另一个集合中,ID 保存在用户集合中

{
 "_id":ObjectId("52ffc33cd85242f436000001"),
 "contact": "987654321",
 "dob": "01-01-1991",
 "name": "Tom Benzamin",
 "address_ids": [
  ObjectId("52ffc4a5d85242602e000000"),
  ObjectId("52ffc4a5d85242602e000001")
    ]
}

为了获取用户信息和他的地址信息,我必须对用户和其他地址进行 2 次查询

是否可以通过使用 eloquent 关系在单个查询中获取带有地址的用户信息。 抱歉,我是 mongodb 集合的新手。

【问题讨论】:

  • 在哪里可以找到解决方案?我也面临同样的问题

标签: php mongodb laravel collections eloquent


【解决方案1】:

对于您想要实现的目标,您不需要像那样将地址的文档 ID 保存在用户文档中。 Laravel 完全是关于干净的代码,那不是干净的。

建立以下关系:

  • 用户 > hasMany > 地址

  • 地址 > 属于 > 用户

要在 Laravel 中加载包含所有地址对象的用户对象,请使用预加载 (https://laravel.com/docs/5.3/eloquent-relationships#eager-loading)。

您可以在 PHP 中编写如下的 eloquent 查询:

User::where(...some condition...)->with('addresses')->get();

最好的问候,

bdschr

【讨论】:

  • 具体可以从eloquent中试用“whereHas”和“with”QueryRelations。
猜你喜欢
  • 2021-08-11
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多