Size: a a a

2021 January 14

DT

Dmitriy Tkachenko in symfony
Сергей Белоусов
Благодарствую за ответы, про доку знаю, видел, интересно было у реальных людей "в теме" мнение узнать. Можно ж просто поболтать😔 ...
Вопрос больше в том, что а зачем вообще?
источник

AK

Aleksei Kuznetsov in symfony
Привет!

В репозитории через dql уменьшаю/увеличиваю значения поля (баланс у пользователя).
Вроде как это единственный верный способ "правильно" изменить важное int-значение.

После успешного изменения, у самой сущности User так же изменяю значение.
После этого в коде при первом попавшемся вызове flush() будет так же обновление User (что логично).

Я нашёл только два решения:
1. вызывать clear(), но тогда потрутся измения других сущностей (потенциальная проблема);
2. прочитать из бд эту сущность вновь (какая-то жесть).

Может быть кто-то сталкивался с таким?
(Скрин ниже)
источник

AK

Aleksei Kuznetsov in symfony
источник

VM

Volodymyr Melko in symfony
Aleksei Kuznetsov
Привет!

В репозитории через dql уменьшаю/увеличиваю значения поля (баланс у пользователя).
Вроде как это единственный верный способ "правильно" изменить важное int-значение.

После успешного изменения, у самой сущности User так же изменяю значение.
После этого в коде при первом попавшемся вызове flush() будет так же обновление User (что логично).

Я нашёл только два решения:
1. вызывать clear(), но тогда потрутся измения других сущностей (потенциальная проблема);
2. прочитать из бд эту сущность вновь (какая-то жесть).

Может быть кто-то сталкивался с таким?
(Скрин ниже)
а почему не сделать в рамках транзакции
$user->decreaseBalance($value);
$em->flush();
источник

AK

Aleksei Kuznetsov in symfony
потенциально может быть, что одновременно обновляется одна и та же сущность :)
через flush она просто перезапишет новым значением
источник

КГ

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

В репозитории через dql уменьшаю/увеличиваю значения поля (баланс у пользователя).
Вроде как это единственный верный способ "правильно" изменить важное int-значение.

После успешного изменения, у самой сущности User так же изменяю значение.
После этого в коде при первом попавшемся вызове flush() будет так же обновление User (что логично).

Я нашёл только два решения:
1. вызывать clear(), но тогда потрутся измения других сущностей (потенциальная проблема);
2. прочитать из бд эту сущность вновь (какая-то жесть).

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

AK

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

D

Dmitry in symfony
не умеет доктрина атомарно обновлять, костылить надо
источник

КГ

Константин Грачев... in symfony
Aleksei Kuznetsov
тут вопрос не в балансе)
я лишь на примере этого запроса скрин сделал.
есть другие запросы, например те же счётчики
Я бы в принципе никакие данные не обновлял через update. Почему инкремент счётчика не может быть записью в базе?
источник

s

s4b0t in symfony
поменять структуру базы не всегда возможно
источник

AK

Aleksei Kuznetsov in symfony
могу лишь сказать "вот так сложилось")
как верно подметил Сергей, работаю с чем приходится
источник

D

Dmitry in symfony
Константин Грачев
Я бы в принципе никакие данные не обновлял через update. Почему инкремент счётчика не может быть записью в базе?
может потому что на кой черт хранить 500к строк если можно просто одним полем ?
источник

КГ

Константин Грачев... in symfony
Dmitry
может потому что на кой черт хранить 500к строк если можно просто одним полем ?
Так себе аргумент
источник

D

Dmitry in symfony
отличный аргумент по скорости и обьемам данных
источник

A

Anton in symfony
Константин Грачев
Я бы в принципе никакие данные не обновлял через update. Почему инкремент счётчика не может быть записью в базе?
с балансом в отдельном поле ведь удобнее работать и быстрее, чем с суммой всех денежных транзакций
а логи платежей все равно храниться будут, ничего не мешает периодически сводить доход и расход и сверять с текущим балансом
источник

КГ

Константин Грачев... in symfony
Anton
с балансом в отдельном поле ведь удобнее работать и быстрее, чем с суммой всех денежных транзакций
а логи платежей все равно храниться будут, ничего не мешает периодически сводить доход и расход и сверять с текущим балансом
При чтении баланс из базы приходит уже одним полем. А при записи просто создаётся отдельная транзакция
источник

D

Dmitry in symfony
вы предлагаете человеку использовать ивент сорсинг для того чтобы оправдать недостатки доктрины...нехилый такой себе оверхед выйдет :)
источник

КГ

Константин Грачев... in symfony
Aleksei Kuznetsov
могу лишь сказать "вот так сложилось")
как верно подметил Сергей, работаю с чем приходится
Ну тогда надо определится, нам "правильно" или как нибудь под наши костыли)
источник

A

Anton in symfony
Константин Грачев
Ну тогда надо определится, нам "правильно" или как нибудь под наши костыли)
может сперва определиться что "правильно"?)
источник

КГ

Константин Грачев... in symfony
Dmitry
вы предлагаете человеку использовать ивент сорсинг для того чтобы оправдать недостатки доктрины...нехилый такой себе оверхед выйдет :)
какой сурсинг ещё, акстись
источник