2016-06-26 3 views
0

Я пытаюсь нажимать, удалять или обновлять некоторые данные в массиве сеансов L5.Laravel 5 session put/push/pull array

Мой код:

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

Когда я собираюсь отправить идентификатор и тип, если идентификатор на сессии и тип отличается, я хочу, чтобы обновить его или 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 сеанс, который содержит массив всех событий и 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);