Как вернуть модель 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.