2017-05-10 8 views
0

をループした後、私はIDを含む配列に基づいてプロパティを保存したいです。配列はIDが含まれている場合、そのプロパティは1です。これは、そうでない場合は0である:保存雄弁なオブジェクトを動的

public function save_item(Request $request) 
{ 

    if ($request->authorize() == false) { 
     return back() 
      ->withErrors($request) 
      ->withInput(); 
    } 

    $my_items= Item::where("owner_id", Auth::user()->owner_id)->get(); 

    foreach ($my_items as $my_item) { 
     if (isset($request->property)) { 
      foreach ($request->property as $property) { 
       if ($property== $my_item->id) { 
        $my_item->property= 1; 

       } else { 
        $my_item->property= 0; 

       } 
      } 
     } else { 
      $my_item->property= 0; 
     } 



     if (isset($request->otherproperty)) { 
      foreach ($request->otherpropertyas $otherproperty) { 
       if ($otherproperty == $my_item->id) { 
        $my_item->otherproperty= 1; 

       } else { 
        $my_item->otherproperty= 0; 

       } 
      } 
     } else { 
      $my_item->otherproperty= 0; 

     } 

     if (isset($request->delete)) { 
      foreach ($request->delete as $delete) { 
       if ($delete== $my_item->id) { 
        $my_item->destroy($my_item->id); 
       } 
      } 
     } 
     my_item->save(); 
    } 

    return back(); 
} 

私はすべてのIDをループし、この機能を期待するとIDが一致した、またはそうでなければ0場合は1としてプロパティを保存します。

代わりに。この関数は、最後のIDだけをに保存します。

削除ループは機能しますが、

助けが必要ですか?

答えて

2

このクエリ:

Item::where("owner_id", Auth::user()->owner_id)->get(); 

は雄弁コレクションを返します。その場合は、このループを避けるためにpluckcontainsを使用できます。

例:

Pluckの詳細については
$my_item->property = $my_items->pluck('property')->contains($request->property); 

とメソッドが含まれています

https://laravel.com/docs/5.4/collections#method-pluck https://laravel.com/docs/5.4/collections#method-contains