Php Laravel连接相关的其他表
我的情况是这样的: 用户模型:Php Laravel连接相关的其他表,php,sql,laravel,relationship,laravel-6,Php,Sql,Laravel,Relationship,Laravel 6,我的情况是这样的: 用户模型: public function role() { return $this->hasOne('App\model\Roles' , 'id' ,'role'); } public function userMetaData() { return $this->hasOne('App\model\UserMetaData' , 'user_id' ,'id'); } public fun
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();
现在关键是在角色中
我正在获取用户的角色,在父数据中
我正在通过自调用从同一用户表中获取用户(父)的创建者,因为父用户也有角色
我的问题是如何在parentData
对象中获取role
对象?
谢谢 首先。。您设置的关系错误,应该属于sto
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();
在这里,我认为第一个
角色是为我想获取数据的用户设置的,但是我想获取与该用户的父级相关的角色,也就是您错误地设置了hasOne,它应该属于to.。检查此处的反向关系。。如果您使用'parentData.role'
进行操作,您将获得具有其角色的父用户。请尝试我的答案并进行检查,然后让我知道答案是否工作正常。