
Shmaltorhbooks
18.04.2018
12:13:44
ну, иными словами, цель я понял. я смысла не понял)

Herman
18.04.2018
12:15:09
По-моему без full outer join тут не обойтись, хотя я могу ошибаться.

Timur
18.04.2018
12:17:04
найти юзеров, которые в автобусе будут отзываться на одно и то же имя?
Найти юзеров, который по какому-то долбоебическому стечению обстоятельств, ввели свое имя неверно (и таких много). Специфика проекта такова, что пользователи регистрируются без введения email и пароля. Точнее email вводится, но он не уникален. Другими словами, они могут регистрироваться сколь угодно много раз

Google

Artem
18.04.2018
12:17:28

Timur
18.04.2018
12:18:18

Artem
18.04.2018
12:18:40
самый нормальный способ искать с опечатками
3граммы самое оно

Timur
18.04.2018
12:19:46

Artem
18.04.2018
12:20:32
я делал его и в бд и в языке и в postgresql есть экстеншн
elasticsearch/sphinx умеют
в твоем случае еще надо outliers отсечь
т.е. сортировать и взять диапазон, а не все сравнивать со всеми

Timur
18.04.2018
12:48:19
Короче, вот результат, если кому интересно:
SELECT c.id, c.firstname, c.lastname, d.id, d.firstname, d.lastname FROM consumer c JOIN consumer d
ON
(
(c.firstname = d.firstname AND c.lastname = d.lastname) OR # Equal
(soundex(c.firstname) = soundex(d.firstname) AND soundex(c.lastname) = soundex(d.lastname)) # Soundex
(c.firstname LIKE CONCAT('%', d.firstname, '%') AND c.lastname LIKE CONCAT('%', d.firstname, '%')) OR
(d.firstname LIKE CONCAT('%', c.firstname, '%') AND d.lastname LIKE CONCAT('%', c.firstname, '%'))
) AND (c.id < d.id)
Всего 6200 строк. Запрос выполняется в течение 15 секунд

Herman
18.04.2018
12:51:19
6200 это количество строк в таблице users ?

Timur
18.04.2018
12:52:03

Herman
18.04.2018
12:54:49
да, не тем местом читаю sql. После добавления нового пользователя в базу будешь заново гонять запрос?

Google

Timur
18.04.2018
12:55:32

Роман
18.04.2018
14:23:06
Всем доброго времени суток)
Кто использовал генерацию миграций и Postgis в symfony? Есть проблема связана с генерацией миграции которая пытается дропнуть таблицы postgis'a. Или может есть что-то вроде конфига schema_filter который бы заставил всю эту историю смотреть только в схему public?

Pavel
18.04.2018
14:41:42

Роман
18.04.2018
14:43:56
Так в чем проблема
Команда генерации миграции создает запросы на дроп таблиц и прочего связанного с postgis, а этого не нужно

Pavel
18.04.2018
14:51:55
Таблицы это таблицв

Andrey
18.04.2018
14:52:13

Роман
18.04.2018
14:56:07

Igor
18.04.2018
14:57:09
Ну вообще в доктрине scheme_filter есть

Andrey
18.04.2018
14:57:40

Igor
18.04.2018
14:57:52

Andrey
18.04.2018
15:35:58
все. туплю оО
оказалось, что относится к таблицам, но в регулярку будет прокидыватся схема тоже в случае не-public схемы. Поэтому регуляркой можно обойтись

Alex
18.04.2018
17:12:35
Ребят, а у меня вопрос по доктрине. Есть у меня сущность А, у неё куча связей и через 7 или 8 сушностей у неё есть связь, скажем, с сущностью Z. И мне нужно посчитать сколько Z привязано к сущности А. Если идти по всем связям - запросов будет куча. Правильно ли я понимаю, что я могу создать простой класс B, который не привязан к таблице в базе и с помощью result set mapping и sql запроса, который считает количество этих Z, спроецировать результат запроса на инстанс этого класса?

Timur
18.04.2018
17:13:43

Alex
18.04.2018
17:14:31

Timur
18.04.2018
17:15:19

Sergey
18.04.2018
17:16:04

Timur
18.04.2018
17:16:21

Alex
18.04.2018
17:16:25
То есть мне надо добавлять какое-то виртуальное поле в сущность?
Которое обычно будет null

Google

Sergey
18.04.2018
17:16:36
не обязательно, ты всегда можешь сделать что-то типа

Alex
18.04.2018
17:16:57
Но при запросе через result set mapping - оно будет заполняться?

Sergey
18.04.2018
17:17:16
SELECT COUNT(entity.id) FROM Foo\Foo entity
INNER JOIN Foo\Bar bar WITH bar.id=entity.someId
единственное ограничение в DQL в плане джойнов - можешь только с сущностями работать и джойнить только сущности

Alex
18.04.2018
17:18:30
У меня основной вопрос не в написании запроса, а в том, могу ли я мапить это дело на простой объект? Который не менеджится доктриной

Sergey
18.04.2018
17:18:38
да, можешь

Alex
18.04.2018
17:18:45
О, супер)
Спасибо)

Sergey
18.04.2018
17:18:51
можешь даже так:
SELECT new SomeDTO(COUNT(entity.id))
ну то есть либо так либо руками массивчик на объект
увы result set mapping тоже только сущности пока умеет

Timur
18.04.2018
17:19:28

Sergey
18.04.2018
17:19:32
но! всегда можно написать свой гидратор!)))
вариантов решений проблемы масса.... самый сложный - кастомная гидрация специализированная под конкретный кейс

Alex
18.04.2018
17:20:09

Sergey
18.04.2018
17:20:20
но да, можно)
особенно если без DQL
можно в разы проще сделать

Google

Timur
18.04.2018
17:21:08

Alex
18.04.2018
17:21:28
Вот это поворот

Timur
18.04.2018
17:21:33

Alex
18.04.2018
17:22:24

Timur
18.04.2018
17:22:46

Alex
18.04.2018
17:24:45
Но тут таблица genre мапится на сущность Genre
Ну, или наоборот, не суть

Admin
ERROR: S client not available

Timur
18.04.2018
17:25:09
Или не надо?

Alex
18.04.2018
17:25:48
Если не сложно)
Я с телефона, в транспорте, у меня сейчас никак(

Timur
18.04.2018
17:32:58

Alex
18.04.2018
17:33:24
Грусть

Andrey
18.04.2018
17:33:46
Так пробуй
можешь даже так:
SELECT new SomeDTO(COUNT(entity.id))

Timur
18.04.2018
17:39:17
Грусть
Еще раз, почему ты не хочешь делать DQL запрос?

Sergey
18.04.2018
17:40:41

Alex
18.04.2018
17:40:48
DQL, который вернёт массивчик?

Google

Timur
18.04.2018
17:44:16
Очень редко, когда надо маппить результаты на сущности, только когда у тебя там какие-нибудь хитросплетения

Alex
18.04.2018
17:45:57

Timur
18.04.2018
17:46:07
Ты ж даже не знаешь, что такое DQL
Или знаешь?

Alex
18.04.2018
17:47:11
Язык запросов доктрины же
Больше контекста в вопросе не помешало бы)

Timur
18.04.2018
17:50:45
Язык запросов доктрины же
Ну по сути DQL запрос конвертируется в обычный SQL запрос, а результаты этого запроса потом маппятся на сущности, то же, что хочешь сделать и ты. DQL обычно хватает для большинства нужд, но ты говоришь, что у тебя там дерзкие запросы?)
Можешь в личку если хочешь

Alex
18.04.2018
17:54:51
Или нечто третье?

Timur
18.04.2018
17:59:19

Alex
18.04.2018
18:01:23
Тут дай бог с 5.5.9 на 5.7 переехать, чтоб хотя бы json уметь. Куда уж там до смены базы)

Timur
18.04.2018
18:02:04

Maksim
18.04.2018
18:02:36
Или тип)

Alex
18.04.2018
18:03:08
Да и хрен с ней, с доктриной) надо было пару раз восстановить из таблицы логов в json кой-чо
Тот ещё треш с replace