38 votes

Retourner un modèle Eloquent en JSON dans Laravel 4

Comment renvoyer un modèle Eloquent au navigateur en tant que JSON ? Quelle est la différence entre les deux méthodes ci-dessous ? Les deux semblent fonctionner.

#1 :

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

#2 :

return $user->toJson();

34voto

Brian Ortiz Points 907

Les données réelles envoyées sont les mêmes, mais...

1 Envoie Content-Type:application/json au navigateur

2 Envoie Content-Type:text/html

Le n°1 est plus correct mais cela dépend de votre Javascript, voir : Quel est le bon type de contenu JSON ?

Cependant, il est beaucoup plus simple de renvoyer simplement le modèle. Il est automatiquement renvoyé au format JSON et le Content-Type est défini correctement :

return $model;

12voto

juco Points 2858

Response::json($someArray) est un moyen générique de renvoyer des données JSON.

return $model->toJson() est spécifique au retour d'un modèle en JSON. C'est l'approche que je préfère lorsque je travaille avec un modèle Eloquent.

10voto

Micael Gustafsson Points 194

En #1 tout d'abord convertir votre Éloquent à un tableau, puis de la convertir en JSON, ce qui semble un peu redondant.

Avec cela à l'esprit, j'irais avec #2 si vous êtes de retour au format JSON à l'appelant.

À noter également que, dans L4, chaque fois qu'un Éloquent modèle est converti en une chaîne de caractères, il sera automatiquement converti en JSON. Par conséquent, vous pouvez faire comme dans cet exemple tiré de la documentation de retour JSON données directement à partir de votre itinéraire:

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

Pour plus d'informations, voir http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X