在用户模型中:
public function role(){
return $this->hasOne('App\Model\Roles','id','role_id');
}
在角色模型中:
public function user(){
return $this->belongTo('App\Model\Users');
}
方法:
$query = Users::where('id', $id)->get();
我得到了什么(使用JSON):
[{"id":2,"user_name":"hazardgeek","user_email":"nwasuper@example.com","user_phone":"*******","user_password":"*********","remember_token":"*****","role_id":2}]
我真正想要的是什么:
我想要来自角色模型的role_title
列,而不是来自Users表的role_id
。
像这样,
......user_password":"thesupernwa","remember_token":null,"role_title":"customer"}]
我怎样才能实现这一目标?谢谢。
答案 0 :(得分:1)
在User.php模型中
public function User(){
protected $appends = ['role_title'];
public function getRoleTitleAttribute(){
$role = $this->getRelation('role');
return !empty($role) ? $this->role->role_title : null;
}
}
答案 1 :(得分:0)
我最终使用原始查询来检索正确的回复
return DB::table('ctr_user')
->select('ctr_user.id AS user_id','user_name','user_email','user_phone','user_password','remember_token','ctr_role.role_title AS title')
->rightJoin('ctr_role', 'ctr_role.id','=','ctr_user.role_id')
->where('ctr_user.id','=',$id)
->get();
这个原始查询的响应返回正是我需要使用Eloquent的响应。
但还是如何?