Laravel会话忘记使用密钥

时间:2017-08-24 03:40:01

标签: laravel laravel-5.4

我试图使用会话忘记laravel但不幸的是我无法设法运行它我也尝试使用UNSET()仍然无法正常工作,下面附带的是通过保存接收新产品的Controller正在使用数组并验证该产品何时已保存,它将不再保存。

$product_details = array('product_id'  => $request->get('product_id'), 
                         'product_qty' => $request->get('product_qty'));

$products = $request->session()->get('product');

if ($request->session()->has('product')) {

    foreach ($products as $key => $value) 
    {
        if($value['product_id']==$request->get('product_id'))
        {
            $request->session()->forget('product',$request->get('product_id'));
        }
    }

    session()->push('product', $product_details);
}
else
{
    session()->push('product', $product_details);
}

return true;

2 个答案:

答案 0 :(得分:1)

如果我收到您的问题,此代码应该可以正常工作并进行一些优化。您不需要忘记旧产品并添加新产品,浪费时间,只需添加一个标志$product_exists来定义是否存在然后添加/不添加。

$product_details = array('product_id'  => $request->get('product_id'), 
                         'product_qty' => $request->get('product_qty'));
$product_exists = false;
if ($request->session()->has('product')) 
{
    $products = $request->session()->get('product');
    foreach ($products as $key => $value) 
    {
        if($value['product_id']==$request->get('product_id'))
        {
            $product_exists = true;
        }
    }
    if(!$product_exists){
        session()->push('product', $product_details);
    }
} else {
    session()->push('product', $product_details);
}
return true;

希望得到这个帮助。

答案 1 :(得分:0)

我使用。$ key

创建了我自己的版本
   $product_details = array('product_id'  => $request->get('product_id'), 
                             'product_qty' => $request->get('product_qty'));

    $products = $request->session()->get('product');

    if ($request->session()->has('product')) {

        foreach ($products as $key => $value) 
        {
            if($value['product_id']==$request->get('product_id'))
            {
                $request->session()->forget('product.'.$key);
            }
        }

        session()->push('product', $product_details);
    }
    else
    {
        session()->push('product', $product_details);
    }

    return true;
}