如何在laravel中进行会话?

时间:2017-08-21 05:59:20

标签: php laravel session

我想基于$ id(唯一ID)创建会话。这是为了当每个用户进入Web应用程序时,他们将拥有自己的会话ID以及他们自己的数组。但是现在当我把它放在函数中时,每次我进入函数时,会话都没有被存储,它会覆盖前一个会话。所以我如何修改代码,以便在函数test()中为每个用户创建所有会话。

这是我的代码:

public function test()
{
    $id = 'new3'; //later on will be auto generate id
    $array[$id] = ['one' => 'abc', 'two' => 'def'];

    if (!session($id)) {
        session($array);
    }

    dd(session()->all());
}

5 个答案:

答案 0 :(得分:0)

你应该像这样操纵laravel会话:

public function test(Request $request)
{
    $id = 'new3'; //later on will be auto generate id
    $array[$id] = ['one' => 'abc', 'two' => 'def'];

// Determining if an item exists in the session.
if (!$request->session()->has($id)) {
    // Storing data in the session.
    $request->session()->put($id, $array[$id]);
}

    dd($request->session()->all());
}

答案 1 :(得分:0)

 Session::put('variable', $yourvalue);

然后开始会议:

 Session::get('variable');

答案 2 :(得分:0)

正确的语法是......

Session::set('variableName', $value);

要获取变量,您可以使用...

Session::get('variableName');

如果你需要设置一次,我会弄清楚你想要什么时候设置它并使用事件来做。例如,如果您想在有人登录时进行设置,您可以使用...

Event::listen('auth.login', function()
{
    Session::set('variableName', $value);
});

答案 3 :(得分:0)

我认为你需要尝试这个希望这项工作适合你:

public function test(Request $request)
{
    $id = 'new3'; //later on will be auto generate id
    $array[$id] = ['one' => 'abc', 'two' => 'def'];

// Determining if an item exists in the session.
if (!$request->session()->has($id)) {
  // Storing data in the session.
  $request->session()->put($id, $array[$id]);
} 

    dd($request->session()->all());
    if($request->session()->has($id)) {
            $request->session()->forget($id);
    }
}

答案 4 :(得分:0)

即使我在操作会话laravel中存储的数组时也没遇到什么麻烦。经过反复试验,我能够使事情正常进行,就像这样:

    $data['quantity'] = $request['quantity'];
    $data['price'] = $price;
    $data['tax'] = $tax;
    $data['shipping'] = 0;


    if($request->session()->has('cart')){
        $cart = $request->session()->get('cart', collect([]));
        $is_id_duplicate = false;
        foreach($cart as $key=> $c){
            if ($c['id']== $request->id) {
               $is_id_duplicate=true;
            break;
            }
        }

        if ($is_id_duplicate) {
             $cart = $cart->map(function ($object, $key) use ($request) {
                if($object['id'] == $request->id){
                    $object['quantity'] = $request->quantity;
                }
                return $object;
            });
            $request->session()->put('cart', $cart);


        }else{
             $cart->push($data);
        }

        echo "<br><pre>";
        print_r($cart);
        echo "</pre>";


    }
    else{
        $cart = collect([$data]);
        $request->session()->put('cart', $cart);
    }