2017-04-04 21 views
0

JSONレスポンスで異なる属性名を持つオブジェクトを返す簡単な方法はありますか?Laravel formatting JSON出力

たとえば、Userというモデルの属性はname, password, xyで、return User::all();の場合はすべてのユーザーが返されます。しかし、私は、私はJSON形式を返しますカスタムオブジェクトのリストを返したい場合は好きなもの:

{ 
    'username' : ... 
    'pass': ... 
    'xyz' : ... 
    'from_related_model' : ... 
} 

ので、私はまた、フィールドの名前は、彼らがDBにあり、その後、異なる戻ってきた、とする各返されたオブジェクトのANにアタッチ関連するモデルからの属性。

ミューテータを使用したくないのは、私は1つのコントローラ内でそのようにしたいだけです。 foreachを使ってオブジェクトをたどり、値を代入してマージされたオブジェクトを返すことで新しいオブジェクトを作ることができます。しかし、これを行う簡単な方法はありますか?

+0

はい。あなたはforeachでそれをする方法の例を追加することができますか? –

答えて

1

手動で返すオブジェクトのリストを生成する必要があります。

例:

$result = []; 
foreach (User::all() as $user) { 
    $result[] = [ 
    'username' => $user->username, 
    'full_name' => $user->first_name . ' ' . $user->last_name, 
    'xyz' => 5, 
    ]; 
} 

return $result; 

あなたは配列やを返すたびに:あなたはあなたのコントローラで、次のような何かを行うことができ、データベースからフェッチされたユーザごとにカスタムオブジェクトを返すしたい場合コントローラーメソッドからコレクション、それは自動的にJSONに変換されます。