【问题标题】:Storing associative array in session variable laravel在会话变量 laravel 中存储关联数组
【发布时间】:2017-04-29 08:18:53
【问题描述】:

实际上,我正在创建一个购物车。我需要将 product_idquantity 存储在会话中,以便我可以将它们检索到购物车页面中。

目前,我正在使用 push 方法向会话变量添加值-

$request->session()->push('order.products', $request->product_id);

它以这种结构存储数据-

array (size=1)
      'products' => 
        array (size=2)
          0 => string '11' (length=2)
          1 => string '9' (length=1)

但是,这样我无法存储数量。我认为将关联数组存储到会话中可以解决我的问题。

那么,我该怎么做呢?

【问题讨论】:

    标签: php laravel session-variables cart


    【解决方案1】:

    请试一试。

    // store data in session.
    
       $request->session()->push('productsid', ['order.products'=>$request->product_id]);
    
    // then get session data here.
    $array = Session::get('productsid');
    

    【讨论】:

    【解决方案2】:

    Laravel 没有提供这个功能,但是你可以在一个函数中实现你想要的:

    /**
     * this method will append new values to session stored array,
     *
     * This method functionality has advantage over Laravel's session()->push is:
     * it can accept an associate array as well as normal array
     *
     * @param  string $session_key    the session key which associated with The 'Array'
     * @param  array $appendingArray The array which will be append to existing session-stored array
     * @return void
     */
    private static function session_append($session_key, $appendingArray)
    {
        session()->put($session_key, array_merge(
            session()->get($session_key),
            $appendingArray
        ));
    }
    

    只要它依赖于session() helper,它也可以是一个全局的helper。

    【讨论】:

      猜你喜欢
      • 2017-11-30
      • 2019-03-30
      • 2013-03-02
      • 2016-09-17
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多