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

拉雷维尔雄辩地数着一段关系

陶裕
2023-03-14

我是新来的laravel和雄辩,我不确定这是否可能。但是我有2张桌子,有一对多的关系。一个是“位置”,一个是“用户”。一个位置可以有许多用户。

所以,如果我想获得所有用户的所有位置,我会这样做:

Location::with("users")->get();

但是我也想知道每个位置有多少用户,我试着这样做

Location::with("users")->count("users")->get();

但那没有奏效。

共有3个答案

谭繁
2023-03-14

您需要对每个位置记录调用count方法,以获得每个位置的用户计数,以下是一个示例:

foreach(Location::get() as $location) // or foreach(Location::with("users")->get() as $location)
{
  echo $location->users()->count();
}

这将解决您的问题,并为您提供每个位置的用户数。您可以在循环中添加检查,以忽略用户计数为0的位置

艾成益
2023-03-14

您应该只使用with count,但我想它在2012年就不可用了。

所以看起来应该是这样的:

Location::with("users")->withCount("users")->get();

您将有一个users_count属性在您的对象上可用。

有关更多详细信息,请阅读文档:https://laravel.com/docs/5.5/eloquent-relationships#querying-关系(向下滚动一点,您将看到计数相关模型)

陆文博
2023-03-14

如果使用急切加载,则不会发生所提到的n1问题。

$locations = Location::with('users')->get();

$locations->users()->count();

这将导致三个查询,无论您有多少用户或位置。

  • 针对位置模型的计数查询
  • 从位置选择*
  • 从中的用户中选择*

这种混淆源于这样一个事实,即这也起作用:

$locations = Location::all();

$locations->users()->count();

但是在这种情况下,它确实为每个位置查询一次。

有关更多信息,请参阅文档:http://laravel.com/docs/eloquent#eager-装载

 类似资料:
  • 基本上,我试图在用户、post和回复数据库之间建立一种关系。以下是模型:注释模型 答复方式: 主要代码: 当我进入评论页面时,我得到以下错误: 未定义的属性:照亮\数据库\雄辩\关系\属于::$name。 这是我第一次使用关系,所以我查看了Laravel文档,但仍然不知道我做错了什么。基本上,我试图从用户数据库中获取用户名(使用comments user_id作为外键),获取评论详细信息(body

  • 我正试图用雄辩加载一个遥远的关系,但遇到了问题。涉及5个表,它们是用户、corporate_users、公司和两个哨兵表(组和users_groups)。 表的设置如下所示: 用户有一个合作用户(一对一) 公司用户归属到公司(多对一) 用户通过users_groups透视表与组建立多对多关系。 所有这些关系都是单独工作的。最初,我可以通过调用

  • 我在中编写查询时遇到问题。 我的疑问是 现在我想把这个查询转换成laravel eloquent。

  • Laravel似乎是一个非常好的PHP框架,与一个好的ORM(雄辩)捆绑在一起。然而,laravel文档中缺少一些内容。文档中只有基本的内容。 无论如何,当涉及到雄辩和模型关系时,我有一个问题,当它跨越两个以上的模型。 例如,我有以下场景。 我有四个数据库表,即:,,,。模型/表格之间的关系如下所示: 用户可以属于多个位置,反之亦然。一个位置可以有许多包。 而我对应的模型关系如下: 我想做什么?:

  • 在Laravel中,有可能把关系放在关系中吗? 我的两个模型: 商店 供应商 我的商店和供应商关系模型: null 正如您所看到的,我有许多商店和供应商,每个都可以通过SupplierStore表相互关联。 这很好用。 我的问题是,对于每一个关系(商店和供应商),可能有许多交货日。 我想如果我进入SupplierStore模型并添加: 会工作,但我似乎没有办法通过雄辩来访问这些数据? 我希望做这样

  • 可以在一个集合/json? 使用者- 用户:id | name post:id |用户| id |文本 postimage: id|post_id|imgpath 用户模型: 帖子模式: 从用户处获取所有帖子工作正常: 我能够在一个循环内从帖子中获取所有图像 我想要的是得到所有的帖子,没有循环的图像,例如 谢啦