2013-03-24 31 views

Trả lời

9

Response::json($someArray) là một cách tổng quát để trả lại dữ liệu JSON.

return $model->toJson() cụ thể để trả về mô hình dưới dạng JSON. Đây sẽ là cách tiếp cận ưa thích của tôi khi làm việc với một mô hình Eloquent.

10

Trong # 1, trước tiên bạn chuyển đổi Eloquent thành một mảng và sau đó bạn chuyển đổi nó thành JSON, có vẻ hơi thừa.

Với ý nghĩ đó, tôi sẽ chuyển sang # 2 nếu bạn trả lại JSON cho người gọi.

Cũng lưu ý rằng, trong L4, bất cứ khi nào mô hình Eloquent được đúc thành chuỗi, nó sẽ được tự động chuyển thành JSON. Do đó, bạn có thể làm như trong ví dụ này từ tài liệu để trả về dữ liệu JSON trực tiếp từ tuyến đường của bạn:

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

Để biết thêm thông tin, xem http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json

+0

Điều này xuất hiện với tôi: 'Nội dung phản hồi phải là chuỗi hoặc đối tượng thực hiện __toString()," boolean "given.' – uruapanmexicansong

33

Các dữ liệu thực tế gửi là như nhau, tuy nhiên ...

# 1 Gửi Content-Type:application/json cho trình duyệt

# 2 Gửi Content-Type:text/html

# 1 chính xác hơn nhưng tùy thuộc vào Javascript của bạn, xem: What is the correct JSON content type?

Tuy nhiên, việc trả lại mô hình trở nên đơn giản hơn rất nhiều. Nó được trả về tự động dưới dạng JSON và Content-Type được đặt chính xác:

return $model; 
Các vấn đề liên quan