我是 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/