
Ilya
07.06.2016
16:09:16
а чего там сложного?
есть интерфейсы почти в каждом фреймворке
оно само работает

Aleh
07.06.2016
16:09:48
Да скорее интересно как в сущности подставляете

Google

Aleh
07.06.2016
16:09:57
Наследует или трейты

Ilya
07.06.2016
16:09:57
а, в этом смысле
я давно отказался от моделей
они дают непредсказуемый sql
руками точу через explain с простановкой оптимальных индексов

Aleh
07.06.2016
16:11:12
Сущности слабо связаны с sql

Sergey
07.06.2016
16:11:29
ага, в лаварале

Aleh
07.06.2016
16:11:45
А, active record)

Sergey
07.06.2016
16:11:47
ларавеле блять*)

Aleh
07.06.2016
16:12:14
Кстати, иногда сложно переключаться между ларавелем каким и скажем prooph
И там, и там модель это AR

Ilya
07.06.2016
16:12:36
в ларавел да, там можно скармливать в модели результат из кверибилдера
в той же доктрине с этим хуже

Google

Aleh
07.06.2016
16:12:50
Только в одном месте active record, а в другом aggregate root

Sergey
07.06.2016
16:13:14
а че хуже?

Ilya
07.06.2016
16:14:01
мне проще кверибилдером сделать запрос, чем плодить классы наследники, переопределяющие кусочки доктрины

Sergey
07.06.2016
16:14:15
все равно не вижу связи

Aleh
07.06.2016
16:14:38
Так кверибилдером и делаешь запрос

Sergey
07.06.2016
16:15:21
метод из репозитория:
public function getDistributorsByUserId($userId)
{
$query = $this->createQueryBuilder('i')
->select('r.id, r.name')
->leftJoin('i.orderItems', 'oi')
->leftJoin('oi.order', 'o')
->leftJoin('oi.reseller', 'r')
->where('o.user = :userId')
->andWhere('r.id IS NOT NULL')
->setParameter('userId', $userId)
->groupBy('r.id')
->orderBy('r.name')
->getQuery();
return $query->getResult();
}
можно тоже самое на DQL сделать, но мне проще билдером

Ilya
07.06.2016
16:19:01
а если у тебя где-то по-соседству уже в кэше лежит кусочек информации, которая пришла бы в запросе
грех не заюзать ее и уменьшить траф
опять же не всем нужно подобное
кому-то и select * from table норм

Sergey
07.06.2016
16:20:18
ну я чаще делаю запросы и получаю DTOшки, там совсем кастрированная доктрина

Alex
07.06.2016
17:49:56
Так и не смог сегодня погонять ничего из-за работы
Новые деньги, мать их

Aleh
07.06.2016
18:28:28
типа из редиса достать? Так не проблема же
ну или in-memory, в этом и фишка ж, сущность вообще игнорит вопрос о том, откуда она или куда ей потом, этим занимаются отдельные инфраструктурные штуки

Ilya
07.06.2016
18:32:26
ну да, например, с редисом работать
сущности же еще правильно класть нужно туда

Google

Ilya
07.06.2016
18:33:24
они же обычно просто в сериализованную строку кладутся
а если подзаморочиться, то можно положить в лист с правильным порядком расстановки полей и уменьшить раз в 5 размер хранимых в редисе данных
и тянуть прямо совсем атомарно почти всегда из редиса
с моделями такое не сделаешь

Aleh
07.06.2016
18:38:37
они же обычно просто в сериализованную строку кладутся
так блин, ты можешь заюзать event sourcing, где евент у тебя будет очень простая структура данных аля
- пользователь зарегался
- пользователь поменял пароль
- пользователь запостил что-то
...
складывать это списком в редисе, а потом когда нужна модель просто восстанавливать по ивентам
фишка в том, что тебе с большего пофиг)
а можешь json агрегата полностью в монге держать
вот когда ты говоришь модель, ты же подразумеваешь active record?
потому что модель это ж все-таки не тольк это)

Ilya
07.06.2016
18:40:06
ORM
конкретные реализации
doctrine, propel, AR из yii и тд

Aleh
07.06.2016
18:41:04
ну так в случае doctrine у тебя простой объект
он же тоже модель
ну, т.е. часть доменной модели
и эта сущность вообще ни про какие sql ничего не знает
ну и опять же, модель может вообще к orm не относится

Ilya
07.06.2016
18:42:42
если в таком ключе смотреть, то тем более не нужны orm

Aleh
07.06.2016
18:42:45
если ты будешь сохранять в монгу или редис, у тебя уже не будет никакой orm

Ilya
07.06.2016
18:42:48
просто модель = класс

Google

Aleh
07.06.2016
18:43:03
ну не совсем
модель это совокупность сущностей и сервисов, представляющие что-то из мира бизнеса
http://t0.gstatic.com/images?q=tbn:ANd9GcR_BD83pqXSbXax5x9hYUWqqAzTXpYLG_blvXj7avCIggCKCaq9

Ilya
07.06.2016
18:44:03
я понял, что ты про ддд
моя модель из обычного mvc

Aleh
07.06.2016
18:44:40
так в обычном mvc за моделью просто стоит application layer
под моделью, не весь конечно, а именно тот объект, который является интерфейсом к каким-то бизнес-транзакциям

Ilya
07.06.2016
18:45:41
вообще стоит в ддд вникать углубленно?

Aleh
07.06.2016
18:46:12
если у тебя есть проекты со сложной бизнес-областью
что угодно, то да, очень классная тема

Ilya
07.06.2016
18:46:45
у меня в целом сложилось впечатление, что приверженцы ддд - это как веганы
всем рассказывают о том, что они на ддд

Aleh
07.06.2016
18:46:58
кстати, Тругве(автор mvc) в статье 2003 года как раз часто вместо модели использует "Domain model"

Ilya
07.06.2016
18:47:17
а каких-то примеров использования в крупных компаниях я не слышал
“twitter построен через ддд”
типа того

Aleh
07.06.2016
18:47:48
у твиттера как раз очень бедная предметная модель
у фейсбука тоже
ну, в плане там нет сложной бизнес-логики
у них другие проблемы

Google

Aleh
07.06.2016
18:48:07
типа нагрузки
быстрая доставка контента

Ilya
07.06.2016
18:48:56
ну в целом у меня тож самое
rtb на go + php

Aleh
07.06.2016
18:50:17
вот например в случае у @beerseller с теми же отчетами, если код выражает ровно то, что говорят специалисты(бухгалтеры и т.д.), тогда код легко подстраивать. Если ему говорят, что пеня это блаблабла, а у него как раз под все это есть именно так названные методы, он в явном виде это и записывает, а не здесь приджойнить эту табличку и просуммировать этот столбец, ага)
короче хз, для общего кругозора

Ilya
07.06.2016
18:51:52
хм
когда пилил на одной из прошлых работ ERP именно так и делал
называл классы и методы в бухгалтерских/hr-ских терминах
сейчас вроде хайп спал вокруг всяких методологий

Aleh
07.06.2016
18:53:22
@iGusev https://www.infoq.com/minibooks/domain-driven-design-quickly вот глянь, тут маленькая книжка, там с примером вроде аэропорта

Ilya
07.06.2016
18:54:47
106 страниц)

Aleh
07.06.2016
18:54:56
ну глянь первые 20 или 30)
там вроде страницы маленькие)
я не помню, емнип она маленькая
Ну как?)

zhikiri
08.06.2016
07:55:50
Цікаво, хто що думає про TDD?

Yura
08.06.2016
07:56:42
Стараюсь работать по BDD

zhikiri
08.06.2016
07:57:46
І як відчуття ? :)