सवाल Laravel 4 में JSON के रूप में एक eloquent मॉडल लौट रहा है


आप जेएसओएन के रूप में ब्राउज़र में एक विलक्षण मॉडल कैसे वापस कर सकते हैं? नीचे दो विधियों के बीच क्या अंतर है? दोनों काम करने लगते हैं।

# 1:

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

# 2:

return $user->toJson();

37
2018-03-24 18:10


मूल




जवाब:


भेजा गया वास्तविक डेटा वही है, हालांकि ...

# 1 भेजता है Content-Type:application/json ब्राउज़र के लिए

# 2 भेजता है Content-Type:text/html

# 1 अधिक सही है लेकिन यह आपके जावास्क्रिप्ट पर निर्भर करता है, देखें: सही JSON सामग्री प्रकार क्या है?

हालांकि, मॉडल को वापस करने के लिए यह बहुत आसान है। यह स्वचालित रूप से जेएसओएन के रूप में लौटाया जाता है और सामग्री-प्रकार सही ढंग से सेट किया जाता है:

return $model;

34
2017-09-15 21:34





# 1 में आप पहले अपने एलोक्वेंट को सरणी में परिवर्तित करते हैं, और उसके बाद आप इसे JSON में परिवर्तित करते हैं, जो थोड़ा अनावश्यक लगता है।

इस बात को ध्यान में रखते हुए, यदि आप जेएसओएन को कॉलर पर वापस कर रहे हैं तो मैं # 2 के साथ जाऊंगा।

यह भी ध्यान रखें कि, एल 4 में, जब भी एक एलोक्वेंट मॉडल स्ट्रिंग में डाला जाता है तो इसे स्वचालित रूप से JSON में परिवर्तित कर दिया जाएगा। इसलिए, आप इस उदाहरण में दस्तावेज से सीधे अपने मार्ग से JSON डेटा वापस करने के लिए ऐसा कर सकते हैं:

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

अधिक जानकारी के लिए देखें http://four.laravel.com/docs/eloquent#converting-to-arrays-or-json


10
2018-03-24 18:19



यह मेरे साथ प्रकट होता है: The Response content must be a string or object implementing __toString(), "boolean" given. - uruapanmexicansong


Response::json($someArray) जेएसओएन डेटा वापस करने का एक सामान्य तरीका है।

return $model->toJson() JSON के रूप में एक मॉडल को वापस करने के लिए विशिष्ट है। एलोक्वेंट मॉडल के साथ काम करते समय यह मेरा पसंदीदा दृष्टिकोण होगा।


9
2018-03-24 18:13