Я пытаюсь получить пользовательский атрибут (https://laravel.com/docs/5.5/eloquent-mutators#defining-an-accessor) из запроса.
Сейчас у меня есть:
User.php
public function getViewUrlAttribute()
{
return route('admin.users.view', ['id' => $this->id]);
}
public function role()
{
return $this->belongsTo('App\Role')->withDefault([
'name' => 'User'
]);
}
UserController.php
public function dataTable(Request $request)
{
$length = $request->has('length') ? $request->input('length') : 10;
$orderDirection = $request->input('orderDirection');
$searchValue = $request->input('search');
$users = User::select('id', 'name', 'email', 'created_at')->with('role:name')->limit($length);
if ($request->has('orderBy')) {
if ($request->has('orderDirection')) {
$users = $users->orderBy($request->input('orderBy'), $request->input('orderDirection') > 0 ? 'asc' : 'desc');
} else {
$users = $users->orderBy($request->input('orderBy'), 'desc');
}
}
return $users->get();
}
Возвращает
[
{
"id": 1,
"name": "User",
"email": "user@test.com",
"created_at": "2018-04-24 14:14:12",
"role": {
"name": "User"
}
}
]
Так что дело в том, что есть какой-то способтакже получить атрибут view_url? (Я пытался внутри with (), но это не удалось)
Также я могу вернуть только имя роли, а не весь объект, как вы можете видеть в коде «Return»? (Я хотел бы что-то вроде: "role": "User").
(Конечно, я стараюсь не запускать raw sql)
Спасибо!