Как вернуть модель Eloquent в браузер как JSON? В чем разница между этими двумя способами ниже? Оба, похоже, работают.
# 1:
return Response::json($user->toArray());
# 2:
return $user->toJson();
Фактические отправленные данные одинаковы, однако...
# 1 Отправляет Content-Type:application/json
в браузер
# 2 Отправляет Content-Type:text/html
# 1 вернее, но зависит от вашего Javascript, см. Каков правильный тип содержимого JSON?
Однако гораздо проще просто вернуть модель. Он автоматически возвращается как JSON, а Content-Type установлен правильно:
return $model;
В # 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
Response::json($someArray)
- это общий способ возврата данных JSON.
return $model->toJson()
является специфическим для возвращения модели в виде JSON. Это был бы мой предпочтительный подход при работе с моделью Eloquent.
The Response content must be a string or object implementing __toString(), "boolean" given.