
Aleh
15.12.2016
12:19:23
Важен размер твоих бизнес-транзакций
Если все просто, то можно отойти и прямо вот в репозитории сейвать
Можно вообще в модель dao передавать

Sergey
15.12.2016
12:21:15
в джаве в принципе много раз видел что метод помечают как Transactional и внутри делают сейвы по разным репосам если их нужно несколько

Google

Sergey
15.12.2016
12:21:31
ну либо юзают напрямую сессию, но только для транзакции

Aleh
15.12.2016
12:24:40
Ну, консистентность сложнее поддерживать кмк
Но я ещё ко всему и слабо понимаю смысл
А save может ещё и сущности дергают?))

Sergey
15.12.2016
12:26:37
не чисто persist($entity) & flush($entity)

Aleh
15.12.2016
12:27:24
Так зачем?

Sergey
15.12.2016
12:30:23
вот даже у core разрабов симфони спрашиваю
>I don’t see anything wrong in having these methods on a repository, but i prefer to use domain-specific names
>Users::register(User $user)

Aleh
15.12.2016
12:30:46
Add/remove норм
Здесь add
А где update?

Sergey
15.12.2016
12:31:27
update такого понятия нет если это managed entity
там только flush нужен

Aleh
15.12.2016
12:31:57
Ну

Google

Aleh
15.12.2016
12:32:07
Так зачем что-то делать, если можно не делать?)

Sergey
15.12.2016
12:39:33
чтобы не тащить зависимость em

Aleh
15.12.2016
12:39:45

Sergey
15.12.2016
12:39:47
удобно ж

Aleh
15.12.2016
12:39:52
Не очень

Sergey
15.12.2016
12:40:01
ну у тебя есть UserRepository

Aleh
15.12.2016
12:40:04
А куда ты тащишь em

Sergey
15.12.2016
12:40:12
ты сделал скажем find, потом чет наколбасил и тут же сделал save

Aleh
15.12.2016
12:40:26
А надо было ещё чего-то
Продукта там счётчик обновить

Sergey
15.12.2016
12:40:40
ну репос то юзера
нах еще что-то)

Aleh
15.12.2016
12:40:54
Ну потому что действие бизнес затронуло
Несколько вещей)

Sergey
15.12.2016
12:41:08
тогда уже нужен em и транзакция

Aleh
15.12.2016
12:41:08
В итоге у меня состояние невалидное

Sergey
15.12.2016
12:41:18
а я говорю за элеметарные атомарные апдейты

Aleh
15.12.2016
12:41:28
Я не хочу думать как там сущности трогали друг друга
Я хочу в контроллере флаш

Google

Aleh
15.12.2016
12:41:38
Если не было эксепшенов
Если это была команда
А не query

Sergey
15.12.2016
12:41:59

Aleh
15.12.2016
12:42:10
Так а что не так?
Я же и прошу кейс :)

Sergey
15.12.2016
12:42:38
у меня был кейс когда нужно фактически в самом начале сохранить сущность, чтобы получить айдиху и дальше ее использовать в логике
и только потом сохранять все остальное

Aleh
15.12.2016
12:43:28
Зачем??
1. Uuid
2. Doctrine сама умеет подставлять

Sergey
15.12.2016
12:44:09
а без uuid?

Aleh
15.12.2016
12:44:28
2

Sergey
15.12.2016
12:44:58
чтобы подставить инкремент нужно знать предыдущий счетчик
или ты о чем?

Aleh
15.12.2016
12:45:14
Ну, зачем тебе чей-то I'd?
Id

Sergey
15.12.2016
12:45:41
вот нужен был, деталей не вспомню) куда-то он отправлялся на другой сервис

Aleh
15.12.2016
12:46:10
Так это ивент хандлер
Типа зарегил и нового юзера
После разослали имейлв

Google

Aleh
15.12.2016
12:46:26
И прочую шнягу

Sergey
15.12.2016
12:46:51
и?

Aleh
15.12.2016
12:47:04
Ну
Сделали в контроллере флаш
И стартанули ивенты или на пост флаше обработчик дернул нужные сервисы нотификации
Но там уже с сущностями ничего не происходит
Только данные считываем
Может даже не из сущностей, а из dto
Или read model
В конце концов ты можешь запустить две или n бизнес транзакции, после каждой делая флуш
Но это ооочень специфичный кейс был бы
В любом случае флаш в контроллере

Sergey
15.12.2016
12:49:56
я не сторонник флаша в контроллере

Aleh
15.12.2016
12:50:17
Ну так явно контроллер запускает две бизнес транзакции

Sergey
15.12.2016
12:50:25
с роллбеками и логикой контроллер тоже занимается?

Aleh
15.12.2016
12:50:26
На каждую флашит(или нет)

Sergey
15.12.2016
12:50:58
ну скажем если что-то пошло не так, при роллбеке нужно еще какую-то логику выполнять

Aleh
15.12.2016
12:51:02
Преобразования и валидации? Он дергает да

Google

Sergey
15.12.2016
12:51:14
а контроллер и логика как бы не очень совместимые понятия

Aleh
15.12.2016
12:51:50
Они могут быть на успех и на феил свои
Или ты хочешь другую транзакцию запускать?

Sergey
15.12.2016
13:13:02
Александр а ты шо тут забыл?)

Aleksandr
15.12.2016
13:13:11
Пришел мысли умные читать

Aleh
15.12.2016
13:13:26

Aleksandr
15.12.2016
13:13:26
Старших товарищей слушать

Sergey
15.12.2016
13:13:26
например создать юзера, и добавить к его карту продукты

Aleh
15.12.2016
13:13:28
зачем?
или хз, может тут один флуш вообще нужен?
там надо смотреть как че

Алексей
15.12.2016
16:39:08
Посоветуйте какой-нибудь бандл, который позволяет большое количество данных фикстурами загонять?
В идеале, чтобы им можно было уже из существующей БД экспортировать записи для последующего использования в фикстурах.

Mikhail
15.12.2016
16:40:09
DoctrineFixturesBundle смотрел?
http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

Алексей
15.12.2016
16:40:19
Да, конечно. Но он не об этом.
К нему можно прикрутить, конечно, импорт из JSON/XML или ещё чего угодно, что придумаешь, но вероятно же эту задачу кто-то уже решал много раз.