Size: a a a

2021 February 01

ВУ

Валентин Удальцов... in symfony
Мы уже давно отказались от всех этих абстракций. Нравится постгрес — так не оскорбляй его это фигнёй, делай запросы нормально.
источник

AK

Aleksei Kuznetsov in symfony
:D
Да чистый то sql работает)

Потенциальная проблема в расхождении названия столбца в бд и в энтити - кто-нибудь рано или поздно ошибется
источник

D

Dmitry in symfony
напишите тест на эту тему
источник

СВ

Сергей Вершинин... in symfony
а еще можно через метаданные читать название столбца)
источник

ПГ

Павел Г. in symfony
Приветствую. Подскажите плиз, как можно промапить UUID custom type доктрина-код с наименьшим копипастом ? :)
Просто если "влоб", то выходит для каждого ногового ID, надо делать новый тайп в доктрину и прописывать его. Выходит кучас строк в конфиге просто чтобы прописать грубо говоря одинаковые классы.
источник

VS

Valentin Saik in symfony
Валентин Удальцов
Мы уже давно отказались от всех этих абстракций. Нравится постгрес — так не оскорбляй его это фигнёй, делай запросы нормально.
а как вы мапите множественные связи? ну например хочу одним запросом получить посты в блоге и их теги

я пришёл к джиону подзапроса в котором мапится всё через array_agg, т.е так:

SELECT * FROM post 
LEFT JOIN
(array_agg(array[tag.id::varchar, tag.name::varchar]) tags FROM post_tag)
и потом

$tagsArr = json_decode($post[tags])
$tags = array_map(fn(array $tag) => ['id' => $tag[0], 'tag' => $tag[1]], $tagsArr);
вот думаю есть ли способ красивее?
источник

ВУ

Валентин Удальцов... in symfony
Valentin Saik
а как вы мапите множественные связи? ну например хочу одним запросом получить посты в блоге и их теги

я пришёл к джиону подзапроса в котором мапится всё через array_agg, т.е так:

SELECT * FROM post 
LEFT JOIN
(array_agg(array[tag.id::varchar, tag.name::varchar]) tags FROM post_tag)
и потом

$tagsArr = json_decode($post[tags])
$tags = array_map(fn(array $tag) => ['id' => $tag[0], 'tag' => $tag[1]], $tagsArr);
вот думаю есть ли способ красивее?
У нас нет связей, мы за низкую связность 😉
источник

VS

Valentin Saik in symfony
у меня пока в одном месте используется, поэтому не сильно болит, но интересно как другие это решают без доктрин всяких
источник

ПГ

Павел Г. in symfony
Valentin Saik
а как вы мапите множественные связи? ну например хочу одним запросом получить посты в блоге и их теги

я пришёл к джиону подзапроса в котором мапится всё через array_agg, т.е так:

SELECT * FROM post 
LEFT JOIN
(array_agg(array[tag.id::varchar, tag.name::varchar]) tags FROM post_tag)
и потом

$tagsArr = json_decode($post[tags])
$tags = array_map(fn(array $tag) => ['id' => $tag[0], 'tag' => $tag[1]], $tagsArr);
вот думаю есть ли способ красивее?
Как варианты, но не думаю что чище:
1) group_concat и формируем json прямо в базе. Не работает, если более 1 связи тащим
2) Вообще некрасивый, но зато не в базе и лишен недостатка п1 - тащим все связи а потом размапиваем в коде , ориентируясь на id связей.
источник

VS

Valentin Saik in symfony
Павел Г.
Как варианты, но не думаю что чище:
1) group_concat и формируем json прямо в базе. Не работает, если более 1 связи тащим
2) Вообще некрасивый, но зато не в базе и лишен недостатка п1 - тащим все связи а потом размапиваем в коде , ориентируясь на id связей.
Гляну на конкат, но по моему уже пробовал, не помню почему отбросил его
источник

D

Dmitry in symfony
Павел Г.
Приветствую. Подскажите плиз, как можно промапить UUID custom type доктрина-код с наименьшим копипастом ? :)
Просто если "влоб", то выходит для каждого ногового ID, надо делать новый тайп в доктрину и прописывать его. Выходит кучас строк в конфиге просто чтобы прописать грубо говоря одинаковые классы.
доктрине ведь указывается тип и класс его реализующий. если вас это не сильно парит, сделайте общий тип и просто замаппите его на нужные названия
источник

ПГ

Павел Г. in symfony
Valentin Saik
Гляну на конкат, но по моему уже пробовал, не помню почему отбросил его
Да по сути тоже самое, что у вас.
источник

ПГ

Павел Г. in symfony
Dmitry
доктрине ведь указывается тип и класс его реализующий. если вас это не сильно парит, сделайте общий тип и просто замаппите его на нужные названия
Да я вот так думал сначала, но выходит что надо указывать на общий тип, а он не знает о тех конкретных ID которые надо генерить при маппинг из базы в код.  Либо просто выносить в общий тип весь код, но в настройках все равно указывать конкретные типы - собственно смысла особо и нет.
источник

А

Антон in symfony
Подскажите пожалуйста, почему через $this->secutiy->getUser() у меня пустые поля со связью ManyToMany, а если достаю пользователя через репозиторий, то поля нормально формируется? Делал  свой Provider и Authenticator, но не могу нагуглить проблему
источник

А

Антон in symfony
источник

ПГ

Павел Г. in symfony
Вроде lazyload
источник

ПГ

Павел Г. in symfony
Initialized false
источник

КГ

Константин Грачев... in symfony
Valentin Saik
а как вы мапите множественные связи? ну например хочу одним запросом получить посты в блоге и их теги

я пришёл к джиону подзапроса в котором мапится всё через array_agg, т.е так:

SELECT * FROM post 
LEFT JOIN
(array_agg(array[tag.id::varchar, tag.name::varchar]) tags FROM post_tag)
и потом

$tagsArr = json_decode($post[tags])
$tags = array_map(fn(array $tag) => ['id' => $tag[0], 'tag' => $tag[1]], $tagsArr);
вот думаю есть ли способ красивее?
источник

КГ

Константин Грачев... in symfony
Valentin Saik
а как вы мапите множественные связи? ну например хочу одним запросом получить посты в блоге и их теги

я пришёл к джиону подзапроса в котором мапится всё через array_agg, т.е так:

SELECT * FROM post 
LEFT JOIN
(array_agg(array[tag.id::varchar, tag.name::varchar]) tags FROM post_tag)
и потом

$tagsArr = json_decode($post[tags])
$tags = array_map(fn(array $tag) => ['id' => $tag[0], 'tag' => $tag[1]], $tagsArr);
вот думаю есть ли способ красивее?
Только у меня без json_decode
https://github.com/automagistre/automagistre/blob/master/src/Part/Entity/PartView.php#L115
Доктрина за меня это делает
источник

ПГ

Павел Г. in symfony
Вопросик по тестам :)
Вот есть фикстуры, но их я так понял удобно загружать чисто для заполенния базы, а не для тестов, так как они всем скопом грузятся.
А как насчет тестов? Какие бестпрактикс? Свои билдеры какие то писать?
источник