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

36

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

# 1:

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

# 2:

return $user->toJson();
Теги:
laravel-4

3 ответа

32

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

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

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

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

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

return $model;
10

В # 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

  • 0
    Со мной это выглядит так: The Response content must be a string or object implementing __toString(), "boolean" given.
9

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню