2014-06-14 16 views
5

मैं एक खेल मैं एक वेबसाइट पर निर्माण कर रहा हूँ के लिए डेटाबेस के लिए एक वस्तु को बचाने के लिए कोशिश कर रहा हूँ बनाने रिक्त मान से डिफॉल्ट वस्तु बनाना है, लेकिन मैं इस त्रुटि प्राप्त हो रही:Laravel जब सुवक्ता वस्तु

Creating default object from empty value 

foreach($input['items'] as $key=>$itemText){ 
     $item = ($input['itemIDs'][$key] === 'NA') ? new GameItem() : GameItem::find($input['itemIDs'][$key]); 
     // if updating this item, check that it is assigned to this game 
     if(!is_null($item->game_id) && $item->game_id != $game->id){ continue; } 
     $item->game_id = $game->id; 
     $item->item = $itemText; 
     $item->answer = $input['answers'][$key]; 
     $item->save(); 
    } 

त्रुटि अगर बयान पर होता है:

यहाँ कोड मैं का उपयोग कर रहा है। मैंने इसे टिप्पणी करने का प्रयास किया, और फिर त्रुटि $ item-> game_id = $ game-> id पर हुई; लाइन।

मैंने $ $ आइटम और $ दोनों गेम को var_dumped किया है, और दोनों वैध वाक्प्रचार ऑब्जेक्ट्स हैं। मैंने भी बिना किसी समस्या के अगर कथन के परिणाम को var_dumped किया, तो क्या हो रहा है के रूप में मुझे नुकसान हो रहा है।

मैं सिर्फ देखा है कि अगर मैं

var_dump($item->toArray()); die(); 

ठीक पहले $ आइटम,> बचाने() करते हैं, लाइन, यह किसी भी त्रुटि फेंक नहीं है और मुझे सरणी बस ठीक दिखाता है।

तब समस्या क्या हो सकती है? मुझे लगता है कि इसे आइटम को सहेजने के साथ करना है, लेकिन मुझे यह बिल्कुल समझ में नहीं आता है।

उत्तर

5

निम्न पंक्ति:

$item = ($input['itemIDs'][$key] === 'NA') ? new GameItem() : GameItem::find($input['itemIDs'][$key]); 

हमेशा एक GameItem वस्तु वापस नहीं करता है तो जब आप तो यह त्रुटि दिखाई देती एक propertyNULL पर मान का उपयोग करने का प्रयास करें। इसलिए आप हमेशा अगर $item कुछ नहीं NULL का उपयोग कर इस तरह है की जाँच करनी चाहिए:

if(!is_null($item) && $item->game_id != $game->id) { continue; } 
इसके बजाय इस बात का

(पहले तो यकीन है कि $itemNULL इससे पहले कि आप $item->game_id का उपयोग नहीं है):

if(!is_null($item->game_id) && $item->game_id != $game->id){ continue; } 
+3

धन्यवाद। मैंने बस अपनी समस्या का पता लगाया, और यह वास्तव में यह नहीं था, लेकिन यह सच है कि जिस तरह से मैं कर रहा था, उसके परिणामस्वरूप अन्य परिस्थितियों में त्रुटि हो सकती थी। मैं वास्तव में बाहर swapped! खाली के साथ is_null()। – Chris

+0

आपका स्वागत है और +1 क्योंकि आपने इसे हटा दिया है लेकिन फिर से क्रिया को पूर्ववत कर दिया है :-) –

संबंधित मुद्दे