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