web-dev-qa-db-ja.com

Laravel 4でEloquentモデルをJSONとして返す

EloquentモデルをJSONとしてブラウザーにどのように返しますか?以下の2つの方法の違いは何ですか?両方ともうまくいくようです。

#1:

return Response::json($user->toArray());

#2:

return $user->toJson();
37
Nyxynyx

ただし、送信される実際のデータは同じです...

#1送信Content-Type:application/jsonブラウザへ

#2送信Content-Type:text/html

#1はより正確ですが、Javascriptに依存します: 正しいJSONコンテンツタイプは何ですか?

ただし、モデルを返す方がはるかに簡単です。 JSONとして自動的に返され、Content-Typeが正しく設定されます。

return $model;
34
Brian Ortiz

#1では、最初にEloquentを配列に変換してから、JSONに変換しますが、これは少し冗長に思えます。

それを念頭に置いて、JSONを呼び出し元に返す場合は#2を使用します。

また、L4では、Eloquentモデルが文字列にキャストされるたびに、自動的にJSONに変換されることに注意してください。したがって、ドキュメントのこの例のように、ルートから直接JSONデータを返すことができます。

Route::get('users', function()
{
    return User::all();
});

詳細については、 http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json を参照してください

10

Response::json($someArray)は、JSONデータを返す一般的な方法です。

return $model->toJson()は、モデルをJSONとして返すことに固有です。これは、Eloquentモデルを使用する場合の私の推奨アプローチです。

9
juco