Size: a a a

Laravel для начинающих

2020 November 19

V

Vladyslav in Laravel для начинающих
Игорь
Потому что на бэке будет обязательный перерасчёт. И будет интересно, если в результате арифметических операций клиент на фронте увидит сумму 10,5 долларов, а сайт после выставит сумму в 10,51 доллар
ну да
источник

V

Vladyslav in Laravel для начинающих
округления и тд
источник

V

Vladyslav in Laravel для начинающих
одинаково использовать
источник

И

Игорь in Laravel для начинающих
А вот ещё вопрос на засыпку.

Если есть товары/услуги с опциями. То есть можно выбирать майку, но из опций цвет, размер и так далее.

Пользователь положил один такой товар в корзину. Забыл и снова положил. Значит если опции одинаковые, то это один и тот же товар, только 2 штуки.

А если если он заказал ещё одну майку, но, например, другого размера, то это уже другая позиция.

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

Единственное, что приходит в голову - сортировать атрибуты по ключу и брать хеш от строки всех ключей и атрибутов. И сравнивать хеши.

Других вариантов нет?

(Корзина в сессии)
источник

BY

B Yank in Laravel для начинающих
привет помогите пожалуйста как такой запрос сделать на laravel

select * from dtb_action where action_id IN (
select action_id from dtb_scenario_join_action where scenario_id IN (
select scenario_id from dtb_scenario_join_material where material_id IN (
select material_id from dtb_material_join_content where content_id IN (
select content_id from dtb_content where content_cd = '01'
) and deleted_at is null
) and deleted_at is null
) and deleted_at is null
) and deleted_at is null
источник

И

Игорь in Laravel для начинающих
PSYTRGLES
не, не надо такое юзать. а если у него там таблица на 50К+ строк, вытащить все записи, что бы пройтись по ним
А вообще ты вдвойне прав. Говорят, что если что-то можно сделать средствами БД, то это нужно делать на стороне БД. Я думаю, это как раз тот случай
источник

И

Игорь in Laravel для начинающих
Не заметил твое высказывание ниже
источник

SG

Sergey Gerasimov in Laravel для начинающих
Игорь
А вот ещё вопрос на засыпку.

Если есть товары/услуги с опциями. То есть можно выбирать майку, но из опций цвет, размер и так далее.

Пользователь положил один такой товар в корзину. Забыл и снова положил. Значит если опции одинаковые, то это один и тот же товар, только 2 штуки.

А если если он заказал ещё одну майку, но, например, другого размера, то это уже другая позиция.

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

Единственное, что приходит в голову - сортировать атрибуты по ключу и брать хеш от строки всех ключей и атрибутов. И сравнивать хеши.

Других вариантов нет?

(Корзина в сессии)
У тебя как в корзине это дело хранится?
источник

И

Игорь in Laravel для начинающих
Sergey Gerasimov
У тебя как в корзине это дело хранится?
Пока никак. Но в сессиях, массив
источник

И

Игорь in Laravel для начинающих
product_id, options, quantity
источник

И

Игорь in Laravel для начинающих
Как-то так будет
источник

a

allpeg in Laravel для начинающих
Игорь
А вот ещё вопрос на засыпку.

Если есть товары/услуги с опциями. То есть можно выбирать майку, но из опций цвет, размер и так далее.

Пользователь положил один такой товар в корзину. Забыл и снова положил. Значит если опции одинаковые, то это один и тот же товар, только 2 штуки.

А если если он заказал ещё одну майку, но, например, другого размера, то это уже другая позиция.

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

Единственное, что приходит в голову - сортировать атрибуты по ключу и брать хеш от строки всех ключей и атрибутов. И сравнивать хеши.

Других вариантов нет?

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

И

Игорь in Laravel для начинающих
allpeg
при добавлении смотрим есть ли в корзине такой предмет с такими же атрибутами, если есть добавляем 1, если нет добавляем позицию.
но зависит от того как в корзине хранится.
если в опциях какой-нибудь json то надо следить чтобы один набор опций всегда выдавал одну и ту же строку.
Слишком дорого проверять атрибуты мне кажется
источник

a

allpeg in Laravel для начинающих
а, корзина не в базе, а в сессиях.
тогда то же самое)
источник

a

allpeg in Laravel для начинающих
Игорь
Слишком дорого проверять атрибуты мне кажется
если корзина в сессии то она один хрен вся в память пихается каждый запрос и обратно на диск/в базу в конце запроса - т.е. не масштабируется
по сравнению с этим оверхэд от проверки идентичности никакой.

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

но я вообще не пойму как опций может быть сильно много. цвет-черный, размер XL - небольшая строка же.
источник

И

Игорь in Laravel для начинающих
allpeg
если корзина в сессии то она один хрен вся в память пихается каждый запрос и обратно на диск/в базу в конце запроса - т.е. не масштабируется
по сравнению с этим оверхэд от проверки идентичности никакой.

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

но я вообще не пойму как опций может быть сильно много. цвет-черный, размер XL - небольшая строка же.
Это был абстрактный пример)))
источник

a

allpeg in Laravel для начинающих
(нормализованного не в смысле нормальных форм, а в смысле что структура данных вне зависимости от порядка ключей например преобразуется в одну и ту же строку)
источник

a

allpeg in Laravel для начинающих
Игорь
Это был абстрактный пример)))
ну в базе если хранить, то же самое - опций не особо много, базе останется сравнить все строки для той же id товара к примеру.
источник

И

Игорь in Laravel для начинающих
allpeg
ну в базе если хранить, то же самое - опций не особо много, базе останется сравнить все строки для той же id товара к примеру.
Нет. Там корзина без базы
источник

И

Игорь in Laravel для начинающих
(будет)
источник