2017-03-29 21 views
0

2つの配列を比較する関数があります。 1つのアレイはユーザーのグループで満たされています。 もう1つの配列はフォーミュラから来ます。それはIDのリストを含んでいます。Laravelの2つの配列を比較する設定値

IDがフォーミュラのIDと一致する場合、ユーザーは「リリース済み」として保存する必要があります。そうでなければ、リリースされたものと一致してはならない。

私のフォーミュラはチェックしても動作しますが、チェックされていないので配列に含まれていない場合でもリリースされたまま保存されます。私のコードは次のとおりです。

public function save_user_list(Requests $request) 

    { 
     $user_id_list = array(); 
     $counter = 0; 

     if(Auth::user()->role == "owner"){ 
     $users = User::where('owner_id',Auth::user()->owner_id) 
      ->get(); 
     }else{ 
      $users = User::where('owner_id',Auth::user()->owner_id) 
       ->where('role',"user") 
       ->get(); 
     } 
     foreach($users as $user) 
     { 
      $user_id_list[$counter] = $user->id; 
      $counter++; 
     } 

    for($i=0;$i<count($request->release);$i++) 
     { 
      $release = 0; 
      for($a=0;$a<$counter;$a++) 
      { 
       if($request->release){ 

       if($request->release[$i] == $user_id_list[$a]) 
       { 
        $release = 1; 
       } 
       } 
      } 
      $userrelease = User::where('id',$request->release[$i]) 
       ->where('owner_id',Auth::user()->owner_id) 
       ->first(); 
      if($userrelease) 
      { 
      $userrelease->active = $release; 
      $userrelease->save(); 
      } 
     } 

     return back(); 

答えて

0

修正済みです。ループにちょうど問題があります。

for ($a = 0; $a < $counter; $a++) { 
     $release = 0; 
     for ($i = 0; $i < count($request->release); $i++) { 
      if ($request->release) { 
       if ($request->release[$i] == $user_id_list[$a]) { 
        $release = 1; 
       } 
      } 
     } 
     $userrelease = User::where('id', $user_id_list[$a]) 
      ->where('owner_id', Auth::user()->owner_id) 
      ->first(); 
     if ($userrelease && $userrelease->role != "owner") { 
      $userrelease->active = $release; 
      $userrelease->save(); 
     } 
    } 
関連する問題