Laravel 5 hasMany relationship on two columns

后端 未结 4 2105
南方客
南方客 2020-11-30 03:13

Is it possible to have a hasMany relationship on two columns?

My table has two columns, user_id and related_user_id.

I want my rela

4条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-30 04:12

    I don't think it's possible to do exactly what you are asking.

    I think you should treat them as separate relationships and then create a new method on the model to retrieve a collection of both.

    public function userRelations() {
        return $this->hasMany('App\UserRelation');
    }
    
    public function relatedUserRelations() {
        return $this->hasMany('App\UserRelation', 'related_user_id');
    }
    
    public function allUserRelations() {
        return $this->userRelations->merge($this->relatedUserRelations);
    }
    

    This way you still get the benefit of eager loading and relationship caching on the model.

    $cause = Cause::with('donations.user.userRelations', 
            'donations.user.relatedUserRelations')
        ->where('active', 1)->first();
    
    $userRelations = $cause->donations[0]->user->allUserRelations();
    

提交回复
热议问题