
Sergey
10.09.2017
21:25:00
да, я рассматриваю весь этот чейн как цепочку адаптеров между http и приложением, мне так проще
но я все-таки не придумал как разрулить когда тебе надо что-то записать и потом выплюнуть респонс без контроллера

Aleserche
11.09.2017
04:29:33
кто мне скажет, есть в доке такой момент http://symfony.com/doc/current/doctrine/associations.html Relationships and Proxy Classes
Решил посмотреть у себя, а правда ли там прокси. И нифига
а не, норм. Proxies\__CG__\AppBundle\Entity\Report

Google

Bohdan
11.09.2017
12:17:33
кто как решает вопрос data migrations? через метод postUp обычных миграций? или через обычные команды?

Artemiy
11.09.2017
12:26:15
Смотря какая задача
К примеру когда создается юзеров таблица, надо сделать сразу postUp (админа добавить например). А если добавить какие-то левые данные генерю новую миграцию.

Dmitriy
11.09.2017
12:30:37
кто как шифрует данные в куках?

Gleb
11.09.2017
12:31:02
данные в куках я шифрую в сессии)

Dmitriy
11.09.2017
12:31:33
а если данные надо долго держать?

Gleb
11.09.2017
12:32:09
вешать сессионную куку с большим сроком хранения?

Sergey
11.09.2017
12:39:47
команды/отдельные фикстуры

Dmitriy
11.09.2017
12:46:16

Gleb
11.09.2017
12:46:53

Dmitriy
11.09.2017
12:48:25
зачем мне хранить кучу всех сессий для маленькой строки, которую используют 20% пользователей?

Gleb
11.09.2017
12:49:54
а) ты и так хранишь их сессии, и у части пользователей к этим данным добавляется маленькая строка
б) ты хранишь сессии только тех 20% пользователей, где будет только маленькая строка.

Google

Gleb
11.09.2017
12:51:51
но если зайти с другой стороны, то вопрос скорее в том, насколько эти данные критичны. Что будет, если их уведут и расшифруют?

Dmitriy
11.09.2017
12:53:27
да ничего особо страшного
Например в симфони remember me шифруется в куках
через base64_encode

Gleb
11.09.2017
12:54:25
тогда почему их не хранить в открытом виде?)
но если хочется зашифровать -- openssl_encrypt() / openssl_decrypt()

Dmitriy
11.09.2017
13:11:03
Угу сделал с их помощью

Bohdan
11.09.2017
15:11:12
@fesor призываю на обсуждение)

Sergey
11.09.2017
15:24:45
перенос данных - как правило в миграциях, но у меня например были ситуации когда нужно было например данные вытянуть откуда-то по хитрому и от окружения сильно зависело, и потому делали одноразовую команду
если перенос данных типа "разделить табличку на две" - то в миграциях, если что-то интереснее - то команда

Bohdan
11.09.2017
15:38:35
окей, спасибо
где-то так и думал

Sergey
11.09.2017
16:40:15

Sergey
11.09.2017
17:06:07
хотя с другой стороны - для апдейта тебе может часто даже не нужен будет репозиторий)

Антон
12.09.2017
05:05:32
@fes0r и зачем так сильно заморачиваться даже если будет одна не нужная зависимость?

Sergey
12.09.2017
06:29:42

Sergey
12.09.2017
08:21:03
привет, подскажите плиз у кого как реализовано, вот есть трейт доменных событий - метод releaseEvents() вызывается после flush(). Как уменьшить кол-во мест с этим кодом?

Sergey
12.09.2017
08:28:44
я юзаю первый вариант если что, второй мне нравится все больше и больше

Sergey
12.09.2017
08:31:01

Google

Sergey
12.09.2017
08:33:06
ну вместо трейта хранить ивенты в централизоварнном хранилище, по сути - глобальная точка доступа
EventStore::remember(UserRegisteredEvent::occure($this->id, $this->profile));

Sergey
12.09.2017
08:35:29

Alexey
12.09.2017
10:31:23
В доктрине есть список запрещенных имен, которые нельзя использовать в qb алиасах?

Sergey
12.09.2017
10:37:35
проверь)

Alexey
12.09.2017
10:38:31

Alan
12.09.2017
10:44:41
ну она никак об этом не скажет, скажет фатал при запросе)
as count нельзя)

Alexey
12.09.2017
10:49:40
Просто я использую зарезервированное имя mysql group для qb. А как заэкранировать что-то не могу найти

Alan
12.09.2017
10:58:13
group попробуй

Alexey
12.09.2017
10:59:36
пробовал. \`\` \`\` и \` \` и {}
Нифига

Alan
12.09.2017
11:00:16
скоре всего никак я недавно искал про зарезервированные слова ниче не нашел у доктрины, у хибернейта в яве есть автоэкранирование тут вроде нету
таблички можно апострофом экранировать так
в аннотации доктрины

Sergey
12.09.2017
12:00:01
привет, вопрос куды положить такой код, вот в репозиториях есть методы типа findByField и часто в слоях выше приходится использовать этот метод. Если он возвращает null нужно кидать что-то типа NotFoundHttpException. И вот такой код напрашивается на дублирование, корректно ли сделать в репах методы типа getByField, которые будут либо возвращать код либо кидать исключение? Или как лучше поступить?

Sergey
12.09.2017
12:02:27
в идеале у тебя репозиторий всегда должен либо что-то возвращать либо кидать исключение

Антон
12.09.2017
12:03:25
null репозиторий может возвращать?
если не найдены результаты

Google

Sergey
12.09.2017
12:03:51
можно все. но вообще не должен
нежелательно но можно. назовем это так

Антон
12.09.2017
12:04:05
а где про это почитать?

Sergey
12.09.2017
12:04:27
ну погугли repository pattern return null

Антон
12.09.2017
12:04:29
Exception вот не понимаю почему там должен быть. ведь это нормальное поведение что нет найденных результатов

Sergey
12.09.2017
12:04:43

Michael
12.09.2017
12:05:17
Почему тогда стандартный findOneBy не падает с exception-ом?

Sergey
12.09.2017
12:05:37

Sergey
12.09.2017
12:05:47
find - это либо нашло, либо исключение
get - это либо нашло, либо нулл
такое именование

Sergey
12.09.2017
12:06:06
то есть банально если у тебя есть метод getSomething и везде где оно юзается "низя" что бы был null - то логично что бы твоей метод этого объекта соответствовал этому

Sergey
12.09.2017
12:06:43
ой не, я пошел работать

Sergey
12.09.2017
12:06:43
нежели выдумывать какие-то там конвенции

Антон
12.09.2017
12:07:10
что то найду описания что нельзя null и обязано Exception
есть ссылка?

Sergey
12.09.2017
12:07:19
одна из основныз ошибок при проектировании интерфейсов - проектирование в отрыве от того как они юзаются

Антон
12.09.2017
12:08:04
чувак ты чего обижаешься? я тебе не противоречил, я ищу инфу

Sergey
12.09.2017
12:08:33
я не обижаюсь, я к тому что есть две разные интерпритации репозиториев, есть DDD-ные и для persistence

Google

Michael
12.09.2017
12:08:36
тогда получается путаница: я использую стандартные методы для простых выборок и не ожидаю эксепшн, а реализуя свои методы почему то эксепшны должны быть

Sergey
12.09.2017
12:08:39
доктриновские - это последнее
если всегда хотят получать сущность а не нул - то твой метод должен удостовериться в этом и выплюнуть эксепшен если что-то не так
если не все - лучше сделать 2 метода
идея - уменьшение количества if-ов в коде

Антон
12.09.2017
12:10:00
ну по логике вещей ожидают коллекцию данных? она не найдена, а тебе в ответ «извини, что то пошло не так». Или я эксепшены неверно понима/

Sergey
12.09.2017
12:10:23
нет, стой
если ничего не найдено у тебя пустая коллекция но никак не null

Dmitriy
12.09.2017
12:10:40
у тебя пустая коллекция

Антон
12.09.2017
12:10:50
так, уже лучше

Sergey
12.09.2017
12:10:50
я говорю о случаях когда ты одну сущность ищешь

Dmitriy
12.09.2017
12:10:55
речь про find объекта

Антон
12.09.2017
12:11:02
понял

Michael
12.09.2017
12:11:30
ну по моему тогда лучше префикс get использовать. всё таки get - получить, т.е. ты уверен, что такие данные есть, и исключение - это как раз обратная ситуация а find - найти, т.е. ты не уверен, что такие данные есть, а просто ищешь

Sergey
12.09.2017
12:11:32
но идея все та же - проектируй сверху вниз а не снизу вверх, не подгоняй код под репозиторий, подгоняй репозиторий под код

Антон
12.09.2017
12:12:13
>find - найти, т.е. ты не уверен, что такие данные есть, а просто ищешь
следуя здравой логике тоже так кажется

Sergey
12.09.2017
12:12:24
если у тебя 10 мест где ты ищешь и во всех 10-ти местах ты кидаешь итсключение - логично что у тебя дублирование и надо вынести его в репозиторий