Как включить столбец или столбцы из дочерней модели, которые принадлежат родительской модели в Eloquent?

В пользовательской модели:

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"}]

Как я могу достичь этого ?? Спасибо.

0

Решение

В модели 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

Другие решения

В итоге я использовал необработанные запросы для получения правильного ответа

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.

Но все же как?

0

По вопросам рекламы [email protected]