Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.06.2017 13:48:50

Структура: user->cart->order->transaction->payment

День добрый.
Хочу попробовать сделать интернет магазин. Все почти готово,кроме корзины и оплаты. Вот тут я застрял, незнаю как правильно структуру бд сделать.немогли бы вы показать примерную структуру с таблицами что в шапке темы?

Не в сети

#2 18.06.2017 14:52:23

Re: Структура: user->cart->order->transaction->payment

уже писал как-то по реализации корзины, код с рабочего проекта скидывал: https://laravel.ru/forum/viewtopic.php?pid=11739#p11739

Не в сети

#3 18.06.2017 17:57:39

Re: Структура: user->cart->order->transaction->payment

Не ного непонятно как у вас база там устроена.
Корзина относится к пользователю. Получается у пользователнй много корзин, а не одна?
Корзина относится к товару. Получается что бы вывести все товары в корзине, мы должны пройтись по 2м цыклам: цыкл со всеми корзинами, а потом цикл с товаром?

Не в сети

#4 18.06.2017 18:29:30

Re: Структура: user->cart->order->transaction->payment

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

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

Не в сети

#5 21.06.2017 21:48:36

Re: Структура: user->cart->order->transaction->payment

  1. нет, корзина находится в сессии, другой браузер – другая сессия.

Это вызывает другую проблему: "ой я что-то закрыла и всё пропало!!11".

У Amazon хороший подход: у них есть и корзина в браузере, и корзина в аккаунте. Если ты не вошёл в аккаунт — используешь браузерную корзину. Если вошёл уже после того, как накидал вещи в корзину (что происходит когда ты пытаешься оформить заказ и вводишь данные), то корзина из браузера автоматически складывается с корзиной в аккаунте, а товары, которые ты не собираешься покупать сейчас, кладутся в список «на потом» (эдакая вторая корзина/wishlist).

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

Не в сети

#6 22.06.2017 07:39:19

Re: Структура: user->cart->order->transaction->payment

Это вызывает другую проблему: "ой я что-то закрыла и всё пропало!!11".

теоретически да, но на практике – нет, сессия достаточно долго живёт, а если нужно – можно идентификатор корзины и в отдельную куку положить со своим временем жизни. тогда после «закрыла» идёт «открыла а корзина на месте».

идеала конечно нет, но подход вполне рабочий, обычно покупки совершаются сразу, редко кто держит товары в корзине месяцами. разве что если на сайте нету «закладок/избранного/списка желаний» – тогда обязательно кто-нибудь догадается корзину в таком качестве использовать smile

Не в сети

#7 22.06.2017 10:49:11

Re: Структура: user->cart->order->transaction->payment

  1. теоретически да, но на практике – нет

Я как раз по своему практическому опыту сужу — когда-то я делал один интернет-магазин именно в таком виде (корзина хранилась в сессии). Меня просто заваливали вопросами/просьбами/предложениями на тему того, что корзина вечно теряется и т.п. (хотя не исключено, что заказчик преувеличивал проблему и число «пострадавших»). Так что в теории оно хорошо, а на практике все пользователи дураки

Не в сети

Подвал раздела