2016-05-08 3 views
0

Я в настоящее время строит JSON RESTful API с Laravel/Lumen и теперь пытается получить доступ к модели атрибуты, которые хранятся в отношениях этой моделидоступа красноречивые отношения при возвращении объекта в JSON

// I also want to return User->roles 
return User::find(1)->first(); 

возвратов:

{ 
    "id": 2, 
    "email": '...' 
} 

Я на самом деле нашел способ, но это, кажется, в значительной степени взломан и не чистят

// Get user 
    $user = User::find($id)->first(); 

    // Make roles public 
    $user->roles = $user->roles; 

    // Return object 
    return $user; 

Возврат:

{ 
    "id": 2, 
    "email": '...', 
    "roles": [ 
    ... 
    ] 
} 

Есть ли лучший способ? Или это вид безопасности, где вы хотите защитить свои данные? Но так как вы можете получить доступ к отношениям в php, почему он не должен быть возвращен как объект json?

Не удалось найти что-то в документации Laravel

ответ

3

Вы можете в ваших отношениях использовать вспомогательную функцию with как так:

user::find($id)->with('roles')->first() 
+0

Я пропустил это в документации? Увидев это в первый раз, спасибо! – kair

+1

@Flyde в зависимости от того, какую версию вы используете, это прямо здесь: https://laravel.com/docs/5.1/helpers#method- с хорошим днем! :-) – Anoxy

1

Попробуйте это:

$user = User::with('roles')->where('id', $id)->first(); 
1

Самый короткий синтаксисом для этого будет:

User::with('roles')->find($id); 

Нет необходимости использовать first() в этом случае