
Sergey
28.07.2018
22:09:42
ну либо да - рефлексией - нафиг геттеры

Igor A.
28.07.2018
22:09:49

Sergey
28.07.2018
22:10:10
ну вот смотри. ты достаешь из базы сущность, потом конвертишь ее в DTO, потом конвертишь ее в json
причем в 90% случаев структура в целом не меняется

Google

Sergey
28.07.2018
22:10:35
а значит можно было бы просто сделать select и запихнуть массивчик в json
минуя всякие промежуточные этапы. да даже array hydrator для простых случаев норм
я наблюдаю следующую проблему - если ты используешь сущности для респонсов, то ты будешь проектировать свои сущности и связи между ними под респонсы а не под бизнес логику
ну тут правда еще и доктрина палки в колеса вставляет

Igor A.
28.07.2018
22:11:54

Sergey
28.07.2018
22:12:25
мэппер знает все о сущности, сущность ничего не знает о мэппере)

Igor A.
28.07.2018
22:12:58

Sergey
28.07.2018
22:13:01
да. там выходит очень жесткая связанность но в целом в определенных условиях это лучшее что можно придумать

Artem
28.07.2018
22:13:01

Sergey
28.07.2018
22:13:14
вопрос в обратной совместимости)

Google

Alexander
28.07.2018
22:13:38

Igor A.
28.07.2018
22:13:44

Егор
28.07.2018
22:13:55
а в чём проблема геттеров, если они используются только для ui?
проблемы начинаются тогда, когда например вместо $user->canSubscribe($podcast) пишут $user->getSubscriptions()->count() < 3, тогда изменения требований по подписке приведут к необходимости менять больше кода, чем если бы это было без геттеров. то есть проблема в том, что мы забираем какие-то данные через геттер и уже сами решаем какую логику на основе этих данных строить.

Sergey
28.07.2018
22:14:06
просто смысла тоже не особо много

Artem
28.07.2018
22:15:04

Sergey
28.07.2018
22:15:20
просто 2 интерфейсика а не один. вот и вся разница
а то многие почему-то начинают обмазываться command bus-ами всякими
хотя это не обязательно

Artem
28.07.2018
22:16:01
да, данные даже физически в одном месте могут быть

Sergey
28.07.2018
22:16:30
именно, суть в том что разграничения на уровне выше, то есть у тебя свобода появляется где чего делать
но вообще я бы рассмотрел такой вариант как... для UI просто сделать вьюшек в базе и заэкспоузить это дело через какой PostgREST/postgrest
(ну просто потому что если все просто я не вижу смысла код писать вообще))

Igor A.
28.07.2018
22:19:17
@fes0r а как сделать прямо по уму?
То есть, пусть у меня сущности с большим количеством логики. И при отдачи данных, их вид сильно отличается от сущностей. Что делать в такой ситуации? Рефлексия?

Sergey
28.07.2018
22:19:36
я серьезно чет подсел на вьюшки в последнее время)

Igor A.
28.07.2018
22:19:54
То есть просто продублировать данные?

Sergey
28.07.2018
22:20:04
да, можно так.

Google

Sergey
28.07.2018
22:20:17
вопрос насколько сложно это будет в твоей ситуации
у меня ивент серсинги всякие и я могу проекций наделать как захочу
вьюшки в целом тоже довольно легко делаются

Igor A.
28.07.2018
22:21:18
Ага. У меня просто сейчас сущность, связи там. Есть сервисы, которые данные готовят. Но хочется как-то иначе.

Igor
28.07.2018
22:21:29
Делаешь RO?

Sergey
28.07.2018
22:21:38
из вещей на которые у меня нет ответа - например подсчет стоимости где нельзя просто сохранить и надо на каждый запрос считать заново. тут я бы сущность грузил

Igor
28.07.2018
22:21:42
Интересно

Алексей
28.07.2018
22:22:03
есть в чате сисадмины? вопрос по linux есть

Sergey
28.07.2018
22:22:06

Igor
28.07.2018
22:22:25

Sergey
28.07.2018
22:22:34

Igor
28.07.2018
22:22:35
Поверх сущности пишешь или dbal?

Sergey
28.07.2018
22:22:43
https://github.com/doctrine/dbal/pull/2510

Igor
28.07.2018
22:22:58
Интересно было бы глянуть

Sergey
28.07.2018
22:23:11
https://gist.github.com/fesor/0d5ecf0afc638c7870272ead20614681
если не видел

Google

Igor
28.07.2018
22:23:18
Ибо в моих проектах люди тупоааты

Sergey
28.07.2018
22:23:35
все что нужно знать о том как начать юзать просто dbal в проектах на симфони) точнее то почему это не юзают)

Алексей
28.07.2018
22:23:35
rm -rf
без sudo не так интересно

Igor
28.07.2018
22:24:41

Sergey
28.07.2018
22:25:17
если нагенеришь вопросов - расширю статью. я эту хрень за пару минут накидал в ответ на коммент вида "юзаю ORM только что бы миграции генерились"

Igor
28.07.2018
22:28:52
На самом деле очень классно читать твое и Макса мнения.
Со статьями беда в том, что не пощуать репы очень часто.
Интересно было бы посмотреть как со вьюшками работаете в рамках сущностей.
Как Сагу реализуете.
Я блин стараюсь, читаю статейки, но пока прикладной задачи с ок бюджетом не будет не уверен, что правильно понимаю
Очень многие освещаемые тут вопросы интересно увидеть на "живом" примере

Bohdan
28.07.2018
22:33:45
1. имхо вьюшки работают либо если у тебя круд + простые агрегации, либо если у тебя какой-нибудь es или подобное, где нужно проекции делать
собирать в них какие-то сложные данные как по мне не айс
2. маппер - возникла мысль писать дженерик-маппер, который будет знать, че откуда брать через аннотации в ДТОшке
правда, тут все равно возникает вопрос - а откуда (уже ДТОшка) знает, как там в сущности все устроено?

Alexander
28.07.2018
22:37:12

Sergey
28.07.2018
22:37:37
типа сумму посчитать?
я про ситуации когда надо тупо данные вывести, максимум какие-то простые преобразования типа по двум таймстэмпам длительность посчитать

Bohdan
28.07.2018
22:38:46
приведи пример сложных данных)
ну я по своим кейсам сужу)
посчитать сумму, опираясь на кучку реляций, выбранных по критерию, и более того - учитывая текущую дату

Sergey
28.07.2018
22:39:17

Bohdan
28.07.2018
22:39:19
ну как бы это решаемо
но блин, это как триггеры и хранимки - уносить половину БЛ в базу ой не хочется
ну как вариант - автоматизировать как-то... типа sql view as code, где на основании того, как сущность лезет в базу, соберется аналогичная вьюшка
но это сложно и я не уверен в том, насколько это выгодно

Alexander
28.07.2018
22:43:11

Bohdan
28.07.2018
22:43:33
если ты начинаешь выносить в них логику, которую я описал - граница размывается

Google

Alexander
28.07.2018
22:46:11
такое на sql писать больно, как мне кажется) независимо от того, где у тебя этот sql будет лежать
потому во вьюшку пихать как-то в голову не приходит

Bohdan
28.07.2018
22:47:13
ну тут да)
это так, немного забегая вперед

Alexander
28.07.2018
22:47:39
а вот через юнион сделать из двух абсолютно разных таблиц, одну, подходящую под условия задачи — почему бы нет)

Sergey
28.07.2018
23:00:19
я думал над таким вариантом если что
в итоге просто вьюшки прекрасно справляются
в большинстве случаев тебе просто надо вывести стэйт)
что до логики в бд - я предпочитаю ее там не хранить, хотя я не вижу ничего плохого в том что бы тебе субд посчитало то что нужно только для UI. словом, если логиа простая, если это в sql читается так же как и в php, то ограничение только одно - логика эта должна быть в одном экземпляре
репорты ты ж на sql делаешь)

Bohdan
28.07.2018
23:10:37

Sergey
28.07.2018
23:11:16
ты ж sql пойдешь писать)
ну короч, повторюсь. тут надо из юзкейса исходить. у меня подавляющее большинство выборок из базы для UI тупо выводят данные и все
причем в большинсте случаев мне даже вьюшки делать не надо)

Roman
29.07.2018
05:48:08

militska
29.07.2018
06:11:25
А если хочется spa потыкать, что из js ного нынче прям модно? React норм?
Не для проекта, а понимания процесса о_О

Dmitry
29.07.2018
07:07:24
Не для проекта, а понимания процесса о_О
Angular/React/Vue.js - вроде эта аббревиатура у всех на слуху + на хабре с завидной частотой появляются статьи об их сравнительном анализе или миграции чела с одного фрейма на другой.

Artem
29.07.2018
07:10:20

Bohdan
29.07.2018
07:35:54