@turindd

Как реализовать корзину на LARAVEL?

Добрый день, уважаемые знатоки/программисты.
Подскажите пжл, как правильно реализовать корзину. Можно словами, но подробнее)

Новый пользователь входит на сайт, у него нет личного кабинета, но он может складывать в корзину. Он складывает товар в корзину, но чтобы оформить покупку при нажатие на кнопку выводиться сообщение - требуется зарегистрироваться.
Он уходит с сайта, возвращается через день, в корзине так же лежит его товар. Регистрируется, и товар уже можно оформлять.

Правильно ли понимаю, что до регистрации
- товар храним в ТАБЛИЦЕ basket,
- id_client = null, ip_client = 192.168.000.000
- при входе не зарегистрированного пользователя достаем товары по ip_client
После регистрации,
- товар храним в ТАБЛИЦЕ basket,
- id_client = 123, ip_client = 192.168.000.000
- при авторизации пользователя достаем товары по id_client

Заранее благодарен за все ответы!
  • Вопрос задан
  • 1663 просмотра
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Корзину надо хранить в БД, привязывать к пользователю или к идетификатор сессии пользователя, если он не авторизован.
В момент авторизации прописываем id пользователя в корзину текущей сессии.

Обязательно предусмотреть крон-команду, котрая будет удалять слишком старые корзины не привязанные к пользователям.

Часто корзина это не только набор товаров, но и какие-то более общие параметры, например промокод, поэтому лучше корзину делать из нескольких таблиц, например baskets и basket_items
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro
frontend developer
Идентификация по IP — так себе идея. Все абоненты Yota к примеру сидят за провайдерским натом, им не выдается статический IP. более того, выданный динамически периодически меняется.

Я бы наверное хранил корзину в localstorage.
Или хотя бы генерил guid и его хранил у клиента, чтобы потом идентифицировать.
Ответ написан
Комментировать
agoalofalife
@agoalofalife
Team Lead
1. Хранить на сервере можно по-разному, в базе данных, сессии(временные файлы на диске), любой другой драйвер хранения.
2. Надо определиться как долго будут храниться товары в корзине. Лучше хранить сессии в базе(в laravel есть такой драйвер) и корзину тоже, соответственно они будут между собой в отношении. Получается некие таблицы, для временных хранений.
Тут как и в localStorage данные привязываются к уст-ву и клиенту(браузер), может произойти несколько сессий.
Данные у вас временные, можно их просто подчищать, через cron например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы