计算具有范围和关系的两行 (Laravel)
Count two rows with scopes and relationships (Laravel)
所以我有两张表,一张叫members
,一张叫memberships
我的目标是计算拥有特定会员资格的会员人数。我已经设置了外键并且关系正常工作,以至于我需要进行计数。
我的范围是(在 Member
模型中)
public function scopeActive($query) {
return $query->where('membership_ended_at', Null);
}
我的关系是(在Member
模型中)
public function membership() {
return $this->belongsTo('App\Membership');
}
这个查询工作正常,我看到有多少 active()
成员的 membership_id
为 6。
$members_student = Membership::find(6)->members()->active()->count();
我不知道这是否有效,但确实有效。现在,我遇到的问题是,我们有一个普通的学生会员,一个ID为14的海外学生会员。
我以为这可能会奏效,但我很快意识到我错了
$members_student = Membership::find([6,14])->members()->active()->count();
我知道我可以调用两个查询并将两者相加,但我正在寻找更优雅的解决方案。只需要一个查询的东西,将我的查询减半。
希望之前有人看过这个
感谢 laravel.io 聊天中的某个人,我设法解决了这个问题。将它张贴在这里以防其他人也在寻找答案。
解决方法:
$members_student = Member::whereIn('membership_id', [6,14])->active()->count();
所以我有两张表,一张叫members
,一张叫memberships
我的目标是计算拥有特定会员资格的会员人数。我已经设置了外键并且关系正常工作,以至于我需要进行计数。
我的范围是(在 Member
模型中)
public function scopeActive($query) {
return $query->where('membership_ended_at', Null);
}
我的关系是(在Member
模型中)
public function membership() {
return $this->belongsTo('App\Membership');
}
这个查询工作正常,我看到有多少 active()
成员的 membership_id
为 6。
$members_student = Membership::find(6)->members()->active()->count();
我不知道这是否有效,但确实有效。现在,我遇到的问题是,我们有一个普通的学生会员,一个ID为14的海外学生会员。
我以为这可能会奏效,但我很快意识到我错了
$members_student = Membership::find([6,14])->members()->active()->count();
我知道我可以调用两个查询并将两者相加,但我正在寻找更优雅的解决方案。只需要一个查询的东西,将我的查询减半。
希望之前有人看过这个
感谢 laravel.io 聊天中的某个人,我设法解决了这个问题。将它张贴在这里以防其他人也在寻找答案。
解决方法:
$members_student = Member::whereIn('membership_id', [6,14])->active()->count();