@symfony_php

Страница 435 из 1418
Sergey
02.12.2017
16:12:30
это удобно потому что не нужен сложный процесс гидрации + модель данных слабо влияет на объектную модель

и дата мэппер в этом плане больше ограничений, хотя все они обходятся

Dmitry
02.12.2017
16:13:42
это удобно потому что не нужен сложный процесс гидрации + модель данных слабо влияет на объектную модель
мне кажется проблемы начаниются когда появляется много связанных данных, именно реализация связывания, выборки

Google
Sergey
02.12.2017
16:14:18
он по сути для этого и придуман)

а вот операции на запись когда много связанных данных - тут есть нюансы

Dmitry
02.12.2017
16:14:30
выборки удобно делать через SQL)
это самому костылить надо джоины, where IN

Sergey
02.12.2017
16:14:59
это самому костылить надо джоины, where IN
не "костылить" а "писать". Костылики это как раз таки все эти лэйзи лоады

Dmitry
02.12.2017
16:15:13
зато удобно с ними работать :)

Sergey
02.12.2017
16:15:19
когда у тебя вместо 2-3-х запросов будет 600

зато удобно с ними работать :)
а ты пробовал работать чисто с sql?)

Dmitry
02.12.2017
16:16:09
а ты пробовал работать чисто с sql?)
только с ним и работал, с фреймворками только начал в этом году :)

Sergey
02.12.2017
16:16:16
я вот пробовал и так и эдак, и могу сказать что и там и там свои плюсы и минусы. Но репорты делать через ORM ты меня не заставишь. Это боль и ужас.

только с ним и работал, с фреймворками только начал в этом году :)
ну значит ты еще ничего сложнее пары джойнов не делал)

повторюсь - ORM нужны ТОЛЬКО для операций записи. На операциях чтения они по большому счету бесполезны. Какой-нибудь AR к слову тут хорошо заходит, потому он и популярен

Dmitry
02.12.2017
16:17:12
еще как делал :) Но нафреймах пока не приходилось. Но я думаю понимаю когда лучше не оспользовать ORM

Sergey
02.12.2017
16:18:07
под "операцией записи" я пожалуй подразумеваю все что относится к изменению стэйта приложения

Google
Dmitry
02.12.2017
16:18:15
но в простых операция AR оч удобно. Order->with(['products'])->get() Чистенько

Sergey
02.12.2017
16:18:26
AR это когда у тебя результат мэпится на тот самый Order

а удобненький квери билдер с поддержкой скоупов и релейшенов - этого валом

Dmitry
02.12.2017
16:19:09
но результат то мы получаем AR

Sergey
02.12.2017
16:19:37
но результат то мы получаем AR
да, но тебе нужен метод save когда ты списочек выводишь?

Sergey
02.12.2017
16:20:06
а потом людям CQRS продают и plain sql

Dmitry
02.12.2017
16:20:36
Но в чем тогда AR, если все квери билдер?

даже save там квери билдер Order::create($data)

Антон
02.12.2017
16:21:16
Ручками писать все это уходит больше времени

Sergey
02.12.2017
16:21:17
Но в чем тогда AR, если все квери билдер?
AR это когда у тебя есть табличка, и есть класс для рядов этой таблички. Все. На этом AR заканчивается.

ты создал ряд и сохранил его - это AR

хотя... тут спорно

Dmitry
02.12.2017
16:22:24
ты создал ряд и сохранил его - это AR
получается что AR тут ничто иное как резкльтат select

Sergey
02.12.2017
16:22:24
оберток мало что-ли что бы превратить вывод постов в блоге в 2 строчки кода?

Антон
02.12.2017
16:22:52
Ну вот ты делаешь коммерческий проект с обычными крудами. Почему все хватают фреймворк? Быстрее

Так можно вообще все писать с нуля каждый раз

Google
Sergey
02.12.2017
16:23:08
не просто результат select, а результат select, который был замэплен на объекты (по ряду на объект), который умеет изменять этот ряд в базе

Dmitry
02.12.2017
16:23:08
да
тогда вообще не понятно чет от RowGateway отличается

Антон
02.12.2017
16:23:22
И будет академично при желании

Sergey
02.12.2017
16:23:49
тогда вообще не понятно чет от RowGateway отличается
Row GAteway = бизнес логика отдельно от модели данных. В разных классах. Active Record = бизнес логика и модель данных - один и тот же класс

Антон
02.12.2017
16:24:14
Но найди сейчас хоть одну вакансию где нужно руками писать без орм и фреймворка?

Или цмс

Sergey
02.12.2017
16:24:32
Ну вот ты делаешь коммерческий проект с обычными крудами. Почему все хватают фреймворк? Быстрее
причем тут фреймворки? Я где-то говорит от фреймворков отказаться? Или не юзать готовые решения? Я предлагаю юзать только те решения которые тебе нужны. Если ты не знаешь что такое unit of work и зачем он тебе нужен - зачем тебе доктрина?)

А мне нужна?)
тебе пока нет

тебе пока надо научиться exit не использовать в коде

Антон
02.12.2017
16:25:01
Чтобы узнать что это и использовать

Sergey
02.12.2017
16:25:35
Чтобы узнать что это и использовать
можно опростик замутить - знаете ли вы что такое Unit of work. А следом - юзаете ли вы doctrine orm больше года

Антон
02.12.2017
16:25:54
Ты плотник. Знаешь рубанок. Не знаешь шлифовальную машину. Используй всегда рубанок

Антон
02.12.2017
16:26:29
Так как он узнает unit of work?

Sergey
02.12.2017
16:26:33
плотники это челики которые на вротпрессах пишут

Dmitry
02.12.2017
16:26:38
Ты плотник. Знаешь рубанок. Не знаешь шлифовальную машину. Используй всегда рубанок
сомнительное утверждение, так в принципе и сапоги кувалдой можно чинить

Arky
02.12.2017
16:26:40
тебе пока нет
А что нужно юзать?) ручками писать запросы?)

Sergey
02.12.2017
16:26:52
Так как он узнает unit of work?
а как ты узнаешь о вещах?)

Google
Sergey
02.12.2017
16:27:15
ну вот узнал ты о доктрине. И даже не потрутидлся почитать документацию где в самом начале написано что такое unit of work

Dmitry
02.12.2017
16:27:15
судя по всему

Антон
02.12.2017
16:27:28
Он говорит вам что знает SQL и использует. Вы ему говорите не используй orm

Антон
02.12.2017
16:27:38
А он видимо хочет познать что это

Arky
02.12.2017
16:28:09
dbal юзай
доктриновский?)

Admin
ERROR: S client not available

Sergey
02.12.2017
16:28:12
мапа которая держит мапу сущностей и изминений
мэпу сущностей держит identity map (там же в доке написано, в разделе Managing data или чето такое)

попробуй дословно перевести Unit of work - как ты думаешь что это? Люди даже этого не могут

доктриновский?)
да что хочешь юзай. Ты exit-ы в коде убрал?

я тебе там комментов добавил

Dmitry
02.12.2017
16:29:23
да что хочешь юзай. Ты exit-ы в коде убрал?
а че за веселая история, поделитесь :)

Arky
02.12.2017
16:30:29
я тебе там комментов добавил
Ты написал убрать сеткрейтед, но я же его юзаю в конструкторе)

Sergey
02.12.2017
16:30:42
а че за веселая история, поделитесь :)
да на гитхабе у него проектик. Он вместо return $response делал echo $data; exit;

Vladislav
02.12.2017
16:30:50
немного не так обьяснил Doctrine will iterate over the Identity Map and for each object compares the original property and association values with the values that are currently set on the object. If changes are detected then the object is queued for a SQL UPDATE operation

Google
Антон
02.12.2017
16:31:06
Unit of work - паттерн. Суть управлять изменениями, и решать проблемы когда есть конкурентность при записи?

Sergey
02.12.2017
16:31:32
Vladislav
02.12.2017
16:31:35
разве он решает это?

Антон
02.12.2017
16:31:41
Переводится как единица работы

Vladislav
02.12.2017
16:31:58
да, а как с конкаренси оно поможет?

никак

оно просто срванивает что поменялось и что нужно сделать в бд

условно

Антон
02.12.2017
16:32:46
Ну видимо да. Он отследит что изменение было не раз и решит что возможно в каком то изменении нет нужды

И оптимально изменит данные

Vladislav
02.12.2017
16:33:25
я ща не понял тебя

Антон
02.12.2017
16:34:37
Ну объект User. Кто то заменил имя. Потом где то изменилось имя. UoF два раза изменит имя пользователя?

Антон
02.12.2017
16:35:38
С телефона просто. Не могу код писать

Vladislav
02.12.2017
16:36:05
Sergey
02.12.2017
16:36:06
Ну видимо да. Он отследит что изменение было не раз и решит что возможно в каком то изменении нет нужды
так причем тут конкурентность? вот тебе пример конкурентности. Есть пользователи Боб, Макр и Элис. Элис запостила фотку в нигляже. Марк и Боб решили поставить лайки. У них у кажого будет свой UoW. Оба существуют практически одновременно и имеют одинаковый стэйт. Что будет?

Vladislav
02.12.2017
16:36:11
до этого оно ничего не считает

Антон
02.12.2017
16:36:41
Sergey User->setName вызвали два раза. И изменили имя по разному. Оба изменения будут произведены?

Vladislav
02.12.2017
16:36:51
это даже я с доки помню, whenever you call 'flush' uow будет делать шототам :)))

Антон
02.12.2017
16:37:12
Ну вот я это и назвал конкуренцией

Страница 435 из 1418