Laravel 5会话put / push / pull数组

时间:2016-06-26 01:14:10

标签: php arrays session laravel-5.2

我正在尝试将一些数据推送,删除或更新到L5会话数组中。

我的代码:

$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和类型时,如果 id 在会话中且类型不同,我想更新它或者removeEvent为true然后删除,如果它不会在会议上推动它。那么,我是否必须搜索整个数组或者是否有快速的方法来执行这些操作?

更新: 我为这整个代码做了一个快速的方法。

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

1 个答案:

答案 0 :(得分:0)

这是如何将您的所有活动保留在一个会话中的。

/* 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);