Size: a a a

2021 January 14

A

Anton in symfony
Aleksei Kuznetsov
да что ж все к этому балансу прилипли :D
например, есть какая-то сущность с полем "количество".

ради транзакционности одного этого поля выносить в отдельную подсущность?)
количество денег, например?
источник

AK

Aleksei Kuznetsov in symfony
:D

например, количество какого-то предмета
(не связано с деньгами)
источник

s

s4b0t in symfony
нажатий на кнопку
источник

A

Anton in symfony
Ну, допустим, носков. Баланс носков - можно хранить, как советовали выше, историю пополнения носков и трат, а потом суммировать
источник

КГ

Константин Грачев... in symfony
Aleksei Kuznetsov
:D

например, количество какого-то предмета
(не связано с деньгами)
А какой смысл менять это поле отдельно от других и в отдельной транзакции?
источник

JB

Jurij Bachkov in symfony
Чтобы можно было блокировку повесить на время изменения
источник

AK

Aleksei Kuznetsov in symfony
Jurij Bachkov
Чтобы можно было блокировку повесить на время изменения
именно)
- проверяем, что количество достаточно
- уменьшаем на X через dql
- на всякий случай (вдруг дальше по коду будет проверка), так же изменяем значение у объекта
источник

JB

Jurij Bachkov in symfony
Зачем через dql? У тебя Entity и @Version есть
источник

КГ

Константин Грачев... in symfony
Aleksei Kuznetsov
именно)
- проверяем, что количество достаточно
- уменьшаем на X через dql
- на всякий случай (вдруг дальше по коду будет проверка), так же изменяем значение у объекта
эм. То есть мы сейчас по сути про складские движения говорим?
источник

D

Dmitry in symfony
Jurij Bachkov
Зачем через dql? У тебя Entity и @Version есть
с этими вещами тоже нужно костылить, чтобы если отлуп получили, перезапускать всю обработку
источник

JB

Jurij Bachkov in symfony
Просто 500 ловим - делов то
источник

D

Dmitry in symfony
а тут уже зависит от контекста, можно ли ловить 500
источник

D

Dmitry in symfony
каждая ваша 500-я это минус в доходах
а если там заказы, значит клиент не даст вам денег
источник

D

Dmitry in symfony
не все так просто, обычное версионирование не решает проблем, просто делает работу с сущностью однопоточной
источник

JB

Jurij Bachkov in symfony
Я думаю реальный клиент не очень щедрый - чтобы одновременно давать денег
источник

OS

Open Source in symfony
Dmitry
а тут уже зависит от контекста, можно ли ловить 500
По моему в гугле, в код-гайде C есть правило, которое запрешает обрабатывать крит- ошибки)
источник

D

Dmitry in symfony
Jurij Bachkov
Я думаю реальный клиент не очень щедрый - чтобы одновременно давать денег
а если у вас 2 клиента и оба покупают одни и теже носки ?
источник

D

Dmitry in symfony
тут версионирование количества носков создаст вам проблему, нужна обработка ошибок адекватная
и тд. долго это будем обсуждать
источник

JB

Jurij Bachkov in symfony
Если в одну и туже секунду - второму 500 покажешь - делов то
источник

D

Dmitry in symfony
Jurij Bachkov
Если в одну и туже секунду - второму 500 покажешь - делов то
для вас делов то, меня за такой отказ линчуют на месте.
ибо как клиента который готов дать денег упускать нельзя
источник