Подтвердить что ты не робот

Возвращение модели Eloquent в качестве JSON в Laravel 4

Как вернуть модель Eloquent в браузер как JSON? В чем разница между этими двумя способами ниже? Оба, похоже, работают.

# 1:

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

# 2:

return $user->toJson();
4b9b3361

Ответ 1

Фактические отправленные данные одинаковы, однако...

# 1 Отправляет Content-Type:application/json в браузер

# 2 Отправляет Content-Type:text/html

# 1 вернее, но зависит от вашего Javascript, см. Каков правильный тип содержимого JSON?

Однако гораздо проще просто вернуть модель. Он автоматически возвращается как JSON, а Content-Type установлен правильно:

return $model;

Ответ 2

В # 1 вы сначала преобразуете свой Eloquent в массив, а затем конвертируете его в JSON, что кажется немного избыточным.

С учетом этого, я бы пошел с № 2, если вы возвращаете JSON вызывающему абоненту.

Также обратите внимание, что в L4 всякий раз, когда модель Eloquent добавляется в строку, она автоматически преобразуется в JSON. Следовательно, вы можете сделать, как в этом примере, документацию, чтобы возвращать данные JSON непосредственно с вашего маршрута:

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

Для получения дополнительной информации см. http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json

Ответ 3

Response::json($someArray) - это общий способ возврата данных JSON.

return $model->toJson() является специфическим для возвращения модели в виде JSON. Это был бы мой предпочтительный подход при работе с моделью Eloquent.

Ответ 4

это решило мою проблему в laravel 5.5:

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