Laravel 4.2: хранение данных многомерного массива в сеансе - PullRequest
0 голосов
/ 17 мая 2018

В моем приложении laravel 4.2 я хочу сохранить детали корзины в сеансе.

cartId =>[
            0 => [
                productId => x,
                quantity  => y
            ],
            1 => [
                productId => u,
                quantity  => v
            ],
            2 => [
                productId => l,
                quantity  => m
            ]

         ]

Я не нашел пути, кроме этого

Session::push('user.teams', 'developers');

для хранения в виде массива в сеансе. но то же самое не применимо здесь

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы можете просто сохранить информацию в требуемом ключе, например:

$cartDetails = [ 
                 0 => [
                       productId => x,
                       quantity  => y
                 ],
                 1 => [
                       productId => u,
                       quantity  => v
                 ],
                 2 => [
                       productId => l,
                       quantity  => m
                 ]
               ];

Session::put('cart', $cartDetails);

У каждого пользователя будет своя корзина, можете ли вы подтвердить с помощью Session::has('cart'), и Session::get('cart') получит вам содержимое $cartDetails.

Session::forget('cart') удалит ключ 'cart' из сеанса, что означает Session::has('cart') == false и Session::get('cart') равно нулю

Если вы планируете использовать ключи в качестве идентификаторов (что-то среди строк Session :: put ($ cartId, $ cartDetails)), я бы не советовал, как позже, если вам нужно добавить что-то с той же логикой, Вы скомпрометируете ключ сессии и, возможно, перезапишите его. То же самое применимо, если кто-то еще взглянет на код (или даже вы в не очень долгом будущем) и вам нужно прочитать код, нет четкого восприятия того, что происходит в сеансе, если вы не прочитали всю функцию. (ИМО)

https://laravel.com/docs/4.2/session

0 голосов
/ 18 мая 2018

Похоже, что вы можете вставить массив непосредственно в сеанс.

$someArray = ['name' => 'John Doe', 'username' => 'jdoe'];

Session::put('user', $someArray);

Если вы хотите получить его значение, просто необходимо:

$user = Session::get('user');
echo $user['name'] // output: John Doe

То же самое применимо для многомерного массива...

...