Laravel 关联其他表

Laravel Join other tables in relation

我有这样的情况:

用户模型:

public function role() {
        return $this->hasOne('App\model\Roles' , 'id' ,'role');
    }

    public function userMetaData() {
        return $this->hasOne('App\model\UserMetaData' , 'user_id' ,'id');
    }

    public function userBet() {
        return $this->hasMany('App\model\UserBet' , 'user_id' , 'id');
    }

    public function userComission() {
        return $this->hasMany('App\model\UserComission' , 'user_id' , 'id');
    }

    public function userPartnership() {
        return $this->hasMany('App\model\UserPartneShip' , 'user_id' , 'id');
    }
    // Self Call
    public function parentData() {
        return $this->hasOne('App\User','id','parent_id');
    }

控制器

$userData = User::with(['userMetaData','userBet','userComission','userPartnership','role','parentData'])
                            ->where('id',$id)
                            ->get();  

现在重点在于 role 我正在获取用户的角色,在 parentData 我正在从同一用户获取用户的创建者 (parent) table 通过自调用现在 parent 也有一个 role

我的问题是如何在 parentData Object 中获取 role object? 谢谢!

首先..你设置的关系是错误的应该是belongsTo

public function role() {
    return $this->belongsTo('App\model\Roles' ,'role', 'id');
}

public function parentData() {
    return $this->belongsTo('App\User','parent_id','id');
}

现在,role 对象内 parentData 设置如下。

$userData = User::with(['userMetaData','userBet','userComission','userPartnership','parentData.role'])
                  ->where('id',$id)
                  ->get();