2017-03-29 2 views
0

Ich habe eine Funktion, die 2 Arrays vergleicht. Ein Array ist mit einer Gruppe von Benutzern gefüllt. Das andere Array stammt aus einem Formular. Es enthält eine Liste von IDs.Einstellwert beim Vergleich zweier Arrays in Laravel

Wenn eine ID mit einer ID aus dem Formular übereinstimmt, sollte der Benutzer als "freigegeben" gespeichert werden. Wenn nicht, sollte es nicht als freigegeben angezeigt werden.

Mein Formular funktioniert, wenn ich sie überprüfe, aber wenn sie nicht markiert sind und daher nicht im Array sind, werden sie immer noch als freigegeben gespeichert. Hier ist mein Code:

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

Antwort

0

Fixed es. Nur ein Problem mit den Schleifen.

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(); 
     } 
    } 
Verwandte Themen