Хранение ассоциативного массива в переменной сеанса laravel

На самом деле, я создаю корзину для покупок. Мне нужно сохранить product_id и количество в сеансе, чтобы я мог получить их на странице корзины.

В настоящее время я добавляю значения в переменную сеанса, используя метод 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)

Но, таким образом, я не могу хранить количество. Я думаю, что сохранение ассоциативного массива в сессии может решить мою проблему.

Итак, как я могу это сделать?

2 ответа

Пожалуйста, попробуйте это.

// store data in session.

   $request->session()->push('productsid', ['order.products'=>$request->product_id]);

// then get session data here.
$array = Session::get('productsid');

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, он также может быть глобальным помощником.

Другие вопросы по тегам