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

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