Laravel - 通过hasMany关系的belongsToMany计数()

时间:2015-03-15 14:01:12

标签: php laravel-4

我被困在我的Laravel项目中,无法解决问题。

解释
在我的应用程序中,有3个表:xCodes,Postings和Users xCode有很多帖子 - 每个帖子都属于许多订阅用户,他们会收到有关更改的通知。

Model XCode.php

public function postings(){
    return $this->hasMany('Posting');   
}

模型Posting.php

public function subscribers(){
        return $this->belongsToMany('User');    
}

public function xcode(){
        return $this->belongsTo('XCode','x_code_id');   
}

模型User.php

public function subscriptions(){
    return $this->belongsToMany('Posting'); 
}

问题
如何管理显示当前用户为每个xCode订阅的过帐数量?像

这样的东西
$xcode->postings->subscribers->where(Auth::user()->id)->count()

在这里不起作用......

提前致谢!

1 个答案:

答案 0 :(得分:0)

我找到的一个可能的解决方案:

    public function count_subscribers($user_id){

    //get a list of all posting-ids associated to the User
    $posting_ids = DB::table("posting_user")->where('user_id',$user_id)->lists('posting_id');
    //get all Postings where current xCode is associated with
    return DB::table('postings')->whereIn('id',$posting_ids)->where('x_code_id',$this->id)->count();

}

我不知道这是否是解决这个问题最优雅的方法,但它有效:)