@procode
Разработчик

БД и работу с ней для «корзины товаров» на Eloquent Laravel как лучше реализовать?

Здравствуйте, мне нужно сделать что-то вроде "корзины товаров". Помогите пожалуйста, советом. Есть таблицы:

users
    id - integer
    email - string

profile
    id - integer
    user_id - integer (внешний ключ к users) 
    name - string 

products
    id - integer
    description - string

korzina
    id - integer
    kolichestvo - integer
    products_id - integer (внешний ключ к products) 
    user_id - integer (внешний ключ к users)


1. Я правильно сделал структуру? Или может внешний ключ из корзины лучше сделать к профайлу? Или что тут по структуре можно посоветовать?

2. Мне нужно из вьюхи профайла управлять этой корзиной (товары будут отображены там же) - т.е. единичный чекбокс на каждом товаре и поле с количеством - мне лучше сделать отдельный контроллер для корзины, или лучше сделать это в контроллере профайла?

3. Есть ли где-то готовые простые решения подобного? Или как это вообще можно загуглить, чтобы найти какие-то гайды или вроде того?

4. Любые ваши замечания и советы :)

Спасибо.
  • Вопрос задан
  • 1582 просмотра
Решения вопроса 1
Чем профиль отличается от пользователя?
Корзина привязана должна быть к пользователю или профилю?
Может ли быть у одного человека несколько корзин и функционал переключения между ними?
Есть гипотеза, что "перевод" лучше подходит, чем "транслит". Наглядно cart лучше чем korzina.

В зависимости от ответов выше, могут быть нюансы, но основные идеи:
- Корзина базовая сущность. Если связь с владельцем 1-1, то вполне можно ключ можно дублировать. В ней неплохо хранить общую информацию - общую сумму, вес
- Товары привязываются к корзине отдельной таблицей, либо внутрь полем json / сериализацией для надежности. json мне нравится больше.
- У корзины неплохо хранить timestamps
- я бы хранил корзины не в той же базе mysql. Либо кэш, либо другая БД (например mongoDb), но я не уверен, что этот совет актуален "для начинающего".
- есть теория, что корзина - это заказ в состоянии "не оформлен". Если следовать ей, то на нее следует посмотреть с точки зрения соответствующей архитектуры. Идеи выше это не учитывают.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
Для корзины вообще не нужна таблица, если только не надо например потом проспамить письмом "вы что-то выбирали выбирали, но заказ не сделали".

Вполне достаточно сессии или в крайнем случае кук, особенно для какой-то примитивной реализации без "полноценного" магазина.
Ответ написан
@gomer1726
Предлагаю другой вариант, вот у Вас есть таблица korzina и есть ячейка products_id так вот Вы замучаетесь с этим, проще можно было сериализировать корзину при заказе чтобы потом можно было удобно работать. Да может быть не совсем понятно, но поверьте это того стоит если что пишите объясню или даже покажу исходники
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы