php – Laravel雄辩计数关系

我是新来的laravel和雄辩,我不知道这是否甚至可能。但我有两个表有一对多的关系。一个是“位置”,一个是“用户”。一个位置可以有许多用户。

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

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

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

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

但是没有工作。

最佳答案
如果您使用急切加载,则不会出现所提到的n个问题。

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

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

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

>对位置模型计数查询
> select * from locations
> select * from users where

混乱产生于这一事实,这也工作:

$locations = Location::all();

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

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

有关详情,请参阅文档:
http://laravel.com/docs/eloquent#eager-loading

转载注明原文:php – Laravel雄辩计数关系 - 代码日志