
Dmitry
05.12.2017
14:25:02
что что?

Pavel
05.12.2017
14:26:42

Sergey
05.12.2017
14:28:35

Google

Sergey
05.12.2017
14:29:06
но мы про православные объекты значения

Arky
05.12.2017
14:29:12

Dmitry
05.12.2017
14:29:29
а вот то, что nullable нельзя сделать embeddables - это мешает...

Tex
05.12.2017
14:31:07
потому что нефиг себе в ноги стрелять. потом проверять же везде придется, прежде чем поля дёргать.

Kirill
05.12.2017
14:31:32
давате напишем свою доктрину!

Tex
05.12.2017
14:31:41

Kirill
05.12.2017
14:31:41
с блекджеоком и нуллабл эмбеддабл
ок
убедил

Dmitry
05.12.2017
14:31:57
ясно дело проверять, если я знаю, что оно nullable, оно будет проверяться

Tex
05.12.2017
14:31:57
я старался

Kirill
05.12.2017
14:32:23

Tex
05.12.2017
14:32:31

Google

Kirill
05.12.2017
14:32:32
достаточно переписать гидратор
ибо у эмбеддабл нет десриминатора
но всё это решается супер-костылём с One2One релейшеном на себя самого

Dmitry
05.12.2017
14:33:54
так то я бы слелал $this->property ?: new NullVO(), а иначе придется делать поддержку null внутри VO... а если у меня это VO может быть как nullable в одной сущности, так и not null в другой... получается каша

Andrey
05.12.2017
14:40:53

Arky
05.12.2017
14:55:21

Yuriy
05.12.2017
14:58:02
всем привет, скажите пожалуйста какие есть более гибкие альтернативы формам в SF ?

Konstantin
05.12.2017
15:05:08
рисовать руками

Gaiaz Iusipov
05.12.2017
15:30:49
ребята, в миграциях можно определить что она dry-run?

Dinar
05.12.2017
15:33:08
bin/console help doctrine:migrations:migrate
И с любой командой можно приписать help и получить описание

Sergey
05.12.2017
15:33:42
но изредка бесит да

Dmitry
05.12.2017
15:34:07
да как его практиковать то

Sergey
05.12.2017
15:34:18
разные ситуации есть)

Dmitry
05.12.2017
15:34:24
тебе доктрина создала уже в поле твой VO...

Gaiaz Iusipov
05.12.2017
15:34:25

Sergey
05.12.2017
15:35:15

Google

Dmitry
05.12.2017
15:37:10
ну так нахреначить в гидрации это понятно... я уж тогда, проще, dbal types буду использовать, там как хочешь, так и крути.... embeddables как раз простотой реализации нравятся

Dinar
05.12.2017
15:37:28
Или вообще изменение

Gaiaz Iusipov
05.12.2017
15:41:19
ну ситуация такая: есть большое количество миграций где запись идет через em и их надо абортить если dry-run так как иначе попортится база, dry-run у них нет
вот и надо либо как-то отключить для них его
пришел такой программер решил потестить результат миграции и сделал dry-run и пиздец)

Bohdan
05.12.2017
15:44:36
вот представь ситуацию
была у тебя сущность, создал ты на нее миграцию
а через пару месяцев ты эту сущность удалил и тоже сделал миграцию
а когда еще через пару месяцев тебе понадобится развернуть проект с нуля - он упадет на миграциях, так как там используется em, который обращается к сущности, которой уже нет

Gaiaz Iusipov
05.12.2017
15:46:35
эм, а нафейхоа тебе в миграциях em?
ну например большая база и запрос разбивается на несколько и вычислениями на пыхе и максимально оптимизируется что =бы не лочить базу. Контроль над тем когда выполнять запрос тоже нужен.

Bohdan
05.12.2017
15:47:10
тем не менее это не повод использовать em
если такое надо - используй $this->connection в миграции и все на raw sql

Gaiaz Iusipov
05.12.2017
15:47:51
повод, другого варианта нет, мускульный запрос повесит базу

Andrey
05.12.2017
15:48:47
код говорит, что нельзя
https://github.com/doctrine/migrations/blob/master/lib/Doctrine/DBAL/Migrations/Version.php

Bohdan
05.12.2017
15:49:10
я так делаю миграцию с переносом данных
preUp вытянул, кинул в переменную, в up поменял структуру, вставил

Andrey
05.12.2017
15:50:12
разве что ивентами обмазаться. Но хз

Gaiaz Iusipov
05.12.2017
15:50:41
спасибо, дельные советы!

Google

Bohdan
05.12.2017
15:51:22
глянь в файле Андрея 249 и 393 строки
по всей видимости, все, что зарегистрировано через addSql будет работать через dry-run нормально
а вот через connection - будет выполняться

Andrey
05.12.2017
15:53:03
ну там есть слушатель, autoCommitListener, который в dry-run не закоммитит транзакцию

Dinar
05.12.2017
15:53:07
Да. Он их не регистрирует как миграционные изменения.

Andrey
05.12.2017
15:53:12
но не искал, где стартуют

smile
05.12.2017
15:54:47
https://www.tomasvotruba.cz/blog/2017/10/16/how-to-use-repository-with-doctrine-as-service-in-symfony/
ктото юзал такой подход к репам? или как вам вцелом)?

Gaiaz Iusipov
05.12.2017
15:55:27
то есть dry-run не предотвратит connection execute :(

Bohdan
05.12.2017
15:55:48
не предотвратит

Admin
ERROR: S client not available

Bohdan
05.12.2017
15:56:34
разве что строить костыли через выборку данных через connection и вставку через add sql

Gaiaz Iusipov
05.12.2017
15:57:46
нет, connections execute часто нужен если на пхп надо чтото с данными сделать, тут только как то abortIf научиться вызывать
надо будет глянуть, может pr запилить туды

Andrey
05.12.2017
16:01:15

Bohdan
05.12.2017
16:06:10
почитал и тоже думаю заюзать
хотя не уверен, насколько кошер инжектить в каждую репу EntityManager для того, чтобы добыть репозиторий сущности

Gaiaz Iusipov
05.12.2017
16:07:39
не знаю, как-то не очень сложно прокинуть руками em или репозиторий
тут я так понимаю авто DI для репозиториев включается
интересно, но хочется минимизировать костомность фраемверка, чтобы показать код другому симфони разработчику и пришлось объяснять по минимому

Bohdan
05.12.2017
16:09:30
вроде внутренний репо руками не прокинешь (насколько понял)
только em надо
и я не уверен, что это будет хорошо
надо ждать фесора)
он не очень-то и кастомный получается
по крайней мере, по коду репы будет все ясно

Andrey
05.12.2017
16:15:06
Есть такой PR принятый
https://github.com/doctrine/DoctrineBundle/pull/727
Я пока не вкурил, решает ли он проблему, около решения видимо

Google

Andrey
05.12.2017
16:15:55
Ну... Требует знания за класс, в принципе. Вроде ок

smile
05.12.2017
16:16:21

Andrey
05.12.2017
16:16:50
в принципе да, напрягает разве что, что нужно делать декоратором их, если расширять интерфейс

Sasha
05.12.2017
16:20:06
кстати, make:entity генерирует репу под использование как сервис

Sergey
05.12.2017
16:20:24

Gaiaz Iusipov
05.12.2017
16:20:59
а если надо чтото заинжектить в саму репу?

Sasha
05.12.2017
16:21:18
autowire ?

Gaiaz Iusipov
05.12.2017
16:21:34
аа =)
из минусов как я понимаю оверхед - типо репа - сервис даже если это не нужно?
просто есть же что-то почему такое не сделали по умолчанию

Sasha
05.12.2017
16:22:44
lazy, не?

Andrey
05.12.2017
16:24:23

Sasha
05.12.2017
16:24:51
я разворачивал еще 4-beta1. надо было из exclude убрать Repository

Gaiaz Iusipov
05.12.2017
16:25:37
lazy, не?
это руками нужным прописывать? или оно так по умолчанию?

Sasha
05.12.2017
16:26:20
все как и любые другие сервисы работает

Boris
05.12.2017
16:46:16
Подскажите, пожалуйста по parameters в четверке.
Best practice это добавлять из в .env?

Николай
05.12.2017
16:47:55
для dev - да. В prod - нет

Boris
05.12.2017
16:48:35
Ошибочка, parameters.yml перекочевал в .env, а просто parameters который раньше был в config.yml это совсем другое :)

Gaiaz Iusipov
05.12.2017
16:48:53