В пользовательской модели:
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":"[email protected]","user_phone":"*******","user_password":"*********","remember_token":"*****","role_id":2}]
Что я на самом деле хочу:
Я хочу role_title
колонка из модели ролей, а не role_id
из таблицы пользователей.
Как это,
......user_password":"thesupernwa","remember_token":null,"role_title":"customer"}]
Как я могу достичь этого ?? Спасибо.
В модели User.php
public function User(){
protected $appends = ['role_title'];
public function getRoleTitleAttribute(){
$role = $this->getRelation('role');
return !empty($role) ? $this->role->role_title : null;
}
}
В итоге я использовал необработанные запросы для получения правильного ответа
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.
Но все же как?