2012-10-07 16 views
8

जब सुवक्ता मॉडल से सभी पंक्तियों को प्राप्त करने में कठिनाई:Laravel सुवक्ता/धाराप्रवाह

$pin = DB::table('pins')->get(); 
:

array(2) { 
    [0]=> 
    object(Pin)#36 (5) { 
    ["attributes"]=> 
    array(9) { 
     ["id"]=> 
     string(1) "2" 
     ["creator"]=> 
     string(1) "1" 
    ["original"]=> 
    array(9) { 
     ["id"]=> 
     string(1) "2" 
     ["creator"]=> 
     string(1) "1" 
    } 
    ["relationships"]=> 
    array(0) { 
    } 
    ["exists"]=> 
    bool(true) 
    ["includes"]=> 
    array(0) { 
    } 
    } 
} 

जब मैं बजाय Fluent का उपयोग के रूप में:

$pin = Pin::all(); 

मैं एक सरणी है कि लगता है कि मिल

मुझे "विशेषता", "ऑर्गिनियल", "realtionships" के बिना एक सादे सरणी के रूप में मिलता है .. अनुक्रमित।

मैं इलोकेंट का उपयोग कैसे कर सकता हूं ताकि यह फ़्लैंट की तरह सादा ऐरे लौटा सके?

+0

आप नहीं कर सकते। Eloquent का पूरा बिंदु ऑब्जेक्ट्स का एक गुच्छा लौटा है कि आप इन मॉडलों के लिए डोमेन-विशिष्ट कुछ विधियों के साथ कार्य कर सकते हैं। – Franz

+0

मैं देखता हूं, इसलिए उस मामले में आप इस सरणी से डेटा प्राप्त करने के त्वरित तरीके से अवगत हैं, इसलिए मैं इसे जेसन (इसे बैकबोन संग्रह में भेजने की कोशिश कर रहा हूं) को एन्कोड कर सकता हूं? धन्यवाद – silkAdmin

+0

@silkAdmin कृपया नीचे संशोधित उत्तर देखें। बैकबोन, एंगुलरज इत्यादि जैसे ढांचे के साथ काम करने के लिए एक अच्छा JSON पेलोड देने के लिए इलोकेंट प्रतिक्रिया का उपयोग करें – Raftalks

उत्तर

11

यह बहुत आसान है।

$pins = Pin::get(); 
foreach($pins as $p){ 
$pin[] = $p->to_array(); 
} 

या यदि आप JSON ऑब्जेक्ट भेजना चाहते हैं,

$pins = Pin::all(); 
return Response::eloquent($pins); 

उपयोग का प्रयास करें या यदि आप एक सरणी की तुलना का उपयोग

return Response::json(array('name' => 'Batman')); 
+0

नोप एक ही – silkAdmin

+0

@silkAdmim प्राप्त करता है जैसा कि फ्रांज ने अपनी टिप्पणी में इंगित किया है, संसाधन वहां होंगे। आप फोरैच लूप कर सकते हैं और to_array() विधि – Raftalks

+0

का उपयोग कर सरणी प्राप्त कर सकते हैं ठीक है इनपुट राफ के लिए धन्यवाद, मैं इसके साथ खेलूँगा। – silkAdmin

1

Laravel एक है json उत्पादन के लिए परिवर्तित किया to_array() फ़ंक्शन में बनाया गया ताकि आप ऐसा कुछ कर सकें।

$pins = Pin::all(); 
foreach($pins as $pin) { 
    $pin_array = $pin->to_array(); 
    /* Do something with pin array here */ 
} 

आशा है कि मदद करता है: डी

+0

धन्यवाद हालांकि to_array विधि किसी सरणी के रूप में उपलब्ध नहीं है, सभी() से वापस एड है (और) ऑब्जेक्ट प्राप्त करें। – silkAdmin

+0

@silkAdmin हां लेकिन यह मॉडल (ऑब्जेक्ट्स) का एक ऐरे है और आपको प्रत्येक ऑब्जेक्ट लाने के लिए सरणी के माध्यम से फ़ोरैच लूप करने की आवश्यकता है और एकल ऑब्जेक्ट पर to_array() विधि को कॉल करने की आवश्यकता है। – Raftalks

3
Laravel 4 के साथ

तुम सिर्फ कर सकते हैं:

//get all pins from db 
public function index(){ 
    return Pin::all(); 
} 

//get specific pin from db 
public function show($id){ 
    return Pin::find($id); 
} 

कि JSON प्रारूप में अपने डेटा को वापस आ जाएगी

+0

धन्यवाद, जानना अच्छा है – silkAdmin

0

या

$model->original; 
// but still do a foreach loop. 
// Like so 

$pins = Pin::all(); 
foreach($pins as $pin) { 
    $pin_array = $pin->original; 
    /* Do something with pin array here */ 
} 
संबंधित मुद्दे