¿Cómo devolver un Elocuente modelo para el navegador como JSON? ¿Cuál es la diferencia entre los dos métodos siguientes? Ambos parece que funciona.

#1:

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

#2:

return $user->toJson();
InformationsquelleAutor Nyxynyx | 2013-03-24

4 Comentarios

  1. 34

    Los datos reales enviado es el mismo, sin embargo…

    #1 Envía Content-Type:application/json para el navegador

    #2 Envía Content-Type:text/html

    #1 es el más correcto, pero depende de tu Javascript, consulte: ¿Cuál es la correcta JSON tipo de contenido?

    Sin embargo, es mucho más sencillo simplemente devolver el modelo. Es automáticamente devuelto como JSON y el Tipo de Contenido se establece correctamente:

    return $model;
  2. 10

    En #1 primero convertir su Elocuente a una matriz y, a continuación, convertir a JSON, que parece un poco redundante.

    Con eso en mente, me gustaría ir con #2 si usted está devolviendo el JSON a la persona que llama.

    También tenga en cuenta que, en L4, siempre Elocuente modelo se convierte en una cadena se convierte automáticamente a JSON. Por lo tanto, usted puede hacer como en este ejemplo de la documentación a devolver JSON directamente los datos de la ruta:

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

    Para obtener más información, consulte http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json

    • Parece que esta conmigo: The Response content must be a string or object implementing __toString(), "boolean" given.
  3. 9

    Response::json($someArray) es una forma genérica para devolver los datos JSON.

    return $model->toJson() es específico para la devolución de un modelo como JSON. Esta sería mi opción preferida cuando se trabaja con un Elocuente modelo.

  4. 0

    esta solucionado mi problema en laravel 5.5:

    function allUsers()
    {
        $users = \App\User::all();
        $usersJson = json_encode($users);
        return $usersJson;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here