2016-06-26 2 views
0

일부 데이터를 L5 세션 배열로 푸시, 삭제 또는 업데이트하려고합니다.Laravel 5 세션 풋/푸시/풀 배열

내 코드 : ID 세션 및 유형이 다른에있는 경우

$id = $request->input('id'); 
$type = $request->input('type'); 
$removeEvent = $request->input('removeEvent'); 

if($request->session()->has('event')){ 
    $events = $request->session()->get('event'); 
    $request->session()->forget('event'); //forget and create new session 
    for($i=0; $i<count($events['id']); $i++){ 
     if($events['id'][$i] == $id&& $events['type'][$i] == $type && $removeEvent == 'true'){ //delete 

     }elseif($events['id'][$i] == $id&& $events['type'][$i] != $type){ //update 
      $request->session()->push('event.id', $events['id'][$i]); 
      $request->session()->push('event.type', $type); 
     }else{ 
      $request->session()->push('event.id', $id); 
      $request->session()->push('event.type', $type); 
     } 
    } 
}else{ 
    $request->session()->push('event.id', $id); 
    $request->session()->push('event.type', $type); 
}** 

$request->session()->save(); 

것은 내가 ID와 유형을 게시 할 예정입니다 때, 나는 그것을 업데이트 할 또는 removeEvent 다음 삭제 사실이다, 그것은 세션에없는 경우 그것을 밀어. 따라서, 전체 배열을 검색해야합니까? 아니면 이러한 조치를 취할 수있는 빠른 방법이 있습니까?

업데이트 : 나는이 전체 코드를 빠르게 만들었습니다.

$check = $request->session()->has('event.'.$id); 
if ($check == 1 && $removeEvent == "true") { 
     $request->session()->forget('event.'.$id); 
} elseif ($check == 1){ 
    $request->session()->put('event.'.$id, $type); 
} else { 
    $request->session()->put('event', 
    array_add($event= $request->session()->get('event'), $id, $type)); 
} 
+0

모든 이벤트 배열과 각 이벤트마다 1 세션을 유지 하시겠습니까? – Erevald

답변

0

이렇게하면 모든 세션을 1 세션으로 유지할 수 있습니다.

/* I'm using the event ID as keys for easy query. 
    $events = [ 
        64543 => ['id' => 64543, 'type' => 'A'], 
        345345 => ['id' => 345345, 'type' => 'B'] 
       ]; 
*/ 

$id   = $request->input('id'); 
$type  = $request->input('type'); 
$removeEvent = $request->input('removeEvent', false); // false by default 

$sessionkey = 'events'; 
$events = Session::get($sessionkey); 

// Remove an event or add/update 
if ($removeEvent) 
    unset($events[$id]); 
else 
    $events[$id] = ['id' => $id, 'type' => $type]; 

Session::put($key, $events);