我有三个模型(组织,用户,访问)和4个表(组织,用户,organization_user,访问) . 我正试图获得组织的累计用户访问量 .
Organization
------------
id,
name
User
---------
id,
name
Organization_User
----------------
id,
organization_id,
user_id
Visit
--------------
id,
user_id
views
只是为了澄清,没有Organization_User模型,它只是用户和组织使用的数据透视表:
$organization->belongsToMany('User');
$user->belongsToMany('Organization');
我可以通过group_id查询数据透视表中的所有user_ids,然后获取每个user_id的所有访问,但是更有说服力的方法是什么?
用户有多个访问权限,访问权限属于用户 . 访问不属于组织 .
2 回答
通过使用whereIn()解决了它 . 基本上没有改变我目前的关系设置...为了得到累积的观点我做了这个:
modelKeys()返回绑定到该组织的所有用户ID . 然后我得到这些用户的所有视图的总和 .
*注意使用Organization :: find而不是DB :: table('organization')来维护Eloquent关系也很重要 . 否则$ organization-> users会出错 .
我想你可能想要这样一个“有很多通过”的关系:
然后你可以打电话给
count()
.Laravel 5.1 doc