2015-02-12 16 views
5

İçinde çok sayıda Öğesi bulunan bir varlık Kümesi var. Bu nedenle, kümeleri güncelleştirirken, form, öğeyi de güncellemek için alanı içerir. Ben yaptım ve iyi çalışıyor, ama bunu yapmak için doğru ve en verimli/zarif bir yol olup olmadığından emin değilim. Gördüğünüz gibiLaravel Eloquent - İlişkili Bir Çok İlişki İlişkisi Verisi

 $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(); 

, her öğe için, ben (o kaç değişebilir) Tüm giriş üzerinden döndürülebilir kanı süzer, 1. Yani bir değeri 1'dir kaydedin: İşte benim kod her yineleme için sorgu yürütülür. Filtreyi her kontrol için bir sorgu yapmak zorunda kalmamak için kullanıyorum.

Benim sorum şu, bunu yapmanın daha verimli/zarif bir yolu var mı? SaveMany() gibi bir şey olabilir mi?

cevap

3

yöntemden saveMany böyle kullanabilirsiniz: laravel docs

+0

ilgili modellerinde belirttiği gibi

 $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(); 

Evet ben belirli bir Collection gerekmez tahmin gördük saveMany() öğesine geçirilecek nesne. Yaptığın gibi basit diziyi kullanabiliriz. Test edildi ve doğrulandı. Teşekkürler. –