2015-02-12 16 views
5

मेरे पास एक इकाई सेट है जिसमें इसमें कई आइटम हैं। इसलिए, सेट को अपडेट करते समय, फ़ॉर्म में फ़ील्ड को इसके आइटम को अपडेट करने के लिए भी शामिल है। मैंने इसे किया है और यह अच्छी तरह से काम कर रहा है, लेकिन मुझे यकीन नहीं है कि यह करने के लिए यह सही और सबसे कुशल/सुरुचिपूर्ण तरीका है।लैरवेल एलोक्वेंट - सहेजें/अपडेट करें एक से अधिक रिलेशनशिप डेटा

 $set->fill(Input::all()); 

     foreach (Input::get('course') as $course_id => $content) { 
      $item = $set->items->filter(function ($item) use ($course_id) { 
       return ($item->course_id == $course_id); 
      })->first(); 
      $item->content = $content; 
      $set->items()->save($item); 
     } 
     $set->save(); 

आप देख सकते हैं, प्रत्येक आइटम के लिए, मैं सभी इनपुट (जो यह कितने है पर भिन्न हो सकते हैं) के माध्यम से लूप में चलाए, यह फ़िल्टर करते हैं, और 1. तो एक से मान 1 को बचाने: यहाँ मेरी कोड है प्रत्येक पुनरावृत्ति के लिए क्वेरी निष्पादित की जाती है। मैं फिल्टर का उपयोग करता हूं ताकि उसे प्रत्येक चेक के लिए कोई क्वेरी न करें।

तो मेरा सवाल यह है कि क्या ऐसा करने के लिए एक और अधिक कुशल/सुरुचिपूर्ण तरीका है? कुछ सहेजने की तरह कुछ() शायद?

उत्तर

3

आप विधि saveMany इस तरह उपयोग कर सकते हैं:

 $set->fill(Input::all()); 
     $items = array(); 
     foreach (Input::get('course') as $course_id => $content) { 
      $item = $set->items->filter(function ($item) use ($course_id) { 
       return ($item->course_id == $course_id); 
      })->first(); 
      $item->content = $content; 
      $items[] = $item; 
     } 

     $set->items()->saveMany($items); 
     $set->save(); 

रूप laravel docs

+0

से संबंधित मॉडल में बताया हाँ मैंने देखा है कि मुझे लगता है कि यह है कि आप एक विशिष्ट संग्रह की जरूरत नहीं है बचाने के लिए ऑब्जेक्ट कई()। हम आपके जैसे सरल सरणी का उपयोग कर सकते हैं। परीक्षण और सत्यापित यह काम कर रहा है। धन्यवाद। –

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