php - Laravel Eloquent 地计算关系

标签 php laravel eloquent

我是 laravel 和 eloquent 的新手,我不确定这是否可能。但我有 2 个具有一对多关系的表。一种是“位置”,一种是“用户”。一个位置可以有多个用户。

因此,如果我想获取所有用户的所有位置,我会这样做:

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

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

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

但这没有用。

最佳答案

如果您使用急切加载,则不会出现提到的 n+1 问题。

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

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

无论您有多少用户或位置,这都会产生三个查询。

  • 对位置模型的查询计数
  • 从位置中选择 *
  • select * from users where in

混淆是因为这也有效:

$locations = Location::all();

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

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

查看文档了解更多信息: http://laravel.com/docs/eloquent#eager-loading

关于php - Laravel Eloquent 地计算关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197692/

相关文章:

php - 从 CodeIgniter 中的核心 Controller 获取数据

php - MySql 数据库的第二行

php - 如何计算数组中的运行总计。 PHP

php - If 语句重定向

php - Bootstrap 设置列全宽,如果它是一行中唯一的列

php - laravel 5如何将数据传递到 Controller 到模型

php - 响应对象 - 使用 Mollie 和 Omnipay 付款

php - Laravel API 资源 : How to return infinite nested array of categories with their children?

php - Eloquent 从数据库中选择,获取比给定 unix 时间戳更新的结果

mysql - 自动完成 在 laravel 中未找到结果