The Ant
да потому что ты гидрируешь в массив)
мне не нужна гидрация в объекты )
Сергей
а лара тебе же объекты возвращает
Юра
Не понятно что за проблема с фильтрами у тебя
The Ant
The Ant
Не понятно что за проблема с фильтрами у тебя
когда я просил помощи, никто не ответил. Только Дима Елисеев объяснил что не так. Щас я вам наглядно уже ничего не покажу. Потому что удалил это говно. И сделал ручную склейку решейшенов.
The Ant
Оно просто не работает
Vlad
ты почаще говори что доктрина гавно и элокент заебись и сразу найдутся помощники
The Ant
😄
Andrei
и как ты на чистом скуле собираешься делать фильтр с 20-ю джойнами в запросе?
Такое как раз проще делать sql-м, гораааааздо проще. А вот сохранять 5-и этажную сущность с кучей релейшенов и правда лучше доктриной
The Ant
Такое как раз проще делать sql-м, гораааааздо проще. А вот сохранять 5-и этажную сущность с кучей релейшенов и правда лучше доктриной
Не согласен ) делать фильтры на голом скуле то ещё занятие. Билдером как-то сильно проще
Andrei
за сборку 20-и этажных json-ов через ORM чисто на выход надо уже казнить
Kirill
за сборку 20-и этажных json-ов через ORM чисто на выход надо уже казнить
Сказать по правде я бы уже за джоины через ОРМ казнил бы
The Ant
Ну эктив рекорд можно рассматривать как продвинутый квери билдер, и возвращать массив. Хотябы вот этот with очень полезный
Kirill
а еще за ОРМ вложенный внутрь ОРМ
Andrei
лан, мне таки кавычечку как-то поставить все же) Пойду пробовать QuoteStrategy
Kirill
это как?
А это вот примерно так-у вас есть два джоина, записанные ОРМом и пару фильтров ИНов,значения которых формируются такими же джоинами.Жаль кода под рукой нет. так стало бы понятнее
Сергей
типа подзапрос?)
Kirill
типа подзапрос?)
Если отбросить все ругательства по поводу того, как это уебищно выглядит, то да
Kirill
и также уебищно работает
Kirill
Не согласен ) делать фильтры на голом скуле то ещё занятие. Билдером как-то сильно проще
А итоговую строку запроса вы как собираете?С помощью чего?)С помощью пхп кода?если да, то в чем сложность в зависимости от условий сформировать нужный вам скуль и отправить его на выполнение?
The Ant
Проблема Ина в том, что сортируется по индексу
Kirill
Проблема Ина в том, что сортируется по индексу
Я говорил не о проблеме ИНа или джоина.А о том, как уебищно выглядит ОРМ когда на нем пытаются делать сложные запросы
The Ant
Ну, на что не пойдешь, лишь бы не писать кучу говнокода
Kirill
ну вот на это точно идти не стоит
Kirill
уж лучше тогда вытаскивать данные из БД и сортировать на стороне кода
Kirill
Тем более есть кейсы, когда по другому ну просто никак.
Kirill
В моей практике такое конечно редко было, но да. Иногда проще реализовывать всякие сортировки в коде
Сергей
Тем более есть кейсы, когда по другому ну просто никак.
А как же курсоры 😁, вы еще видимо не видели, чего гуру SQL не знающие других языков, творят на SQL. Деревья любой сложности строят, не то что ваши сортировки :)
Kirill
Я бы хотел посмотреть, как они будут сортировать таблицу футбольных команд с учётом различных регламентов)действующих на тот или иной сезон.
Сергей
Легко, функция, которая вызывает функцию, которая вызывает функцию, которая создает 10ок временных сквозных таблиц между функиями, все обмазанное курсорами и приправленными 10ком вьюх. Я уже достаточно на это насмотрелся :)
Andrei
Ну, на что не пойдешь, лишь бы не писать кучу говнокода
да ладно, какой говнокод. Там паттерны из CQRS заюзать, SQL шаманство за интерфейс спрятать и никакого говнокода
Сергей
Ах да, еще про триггеры забыл :)
Kirill
Ах да, еще про триггеры забыл :)
О)на одной из моих прежних работ это дело любили)триггер на триггере на триггере триггерами погоняет)но там это отчасти было оправдано наличием дохуя умных товарищей, которые любили напрямую в базе кое что править, минуя ограничения интерфейса)доступ у них не отберешь, но у других отделов отчёты из за этого по пизде ехали
Andrei
Хранимые процедуры или речь про старый добрый interface?
ну хендлер запроса на чтение дергает класс поставщик данных, в котором за его интерфейсом спрятана логика всех sql вызовов
Andrei
там же и примитивная гидрация если надо. а не все то что там доктрина вертит
Andrei
Где конкретный класс реализует работу с той или иной СУБД?
где конкретный класс реализует выполнение конкретного sql запроса
Null
$user = User::find(1); $user ->getConnection() ->getDoctrineSchemaManager() ->dropDatabase( $post ->getConnection() ->getDatabaseName() ) А я эктив рекорды за такие фокусы люблю 😁
Kirill
Привет! Подскажите, я правильно понимаю, что когда я в цикле заполняю новую сущность и делаю persist, а после цикла flush, то доктрина все это одним запросом отправит в БД? Если так, то нужно ли как-то разбивать этот массив? Там какое-то ограничение есть на вставку разом. Или доктрина сама внутри все сделает?
Сергей
Сделает в одной транзакции
Andrei
Короче возвращаясь к топику. Я тут провел сеанс раскопок исходников доктрины. Эта хрень на самом деле вполне себе умеет кавычить joinColumn. Но когда там fetch: LAZY (по умолчанию) она джойн не строит. а дозапрашивает по запросу уже через WHERE - и вот тут она, внезапно не квотит уже! поменял fetch на EAGER, тем самым заставив ее использовать JOIN, и кажись пошло. Надеюсь при сохранении она отработает как надо
Павел
вот я делал тогда такую хрень, но она забагованая, там на фильтрах дичь происходит с рандом цифрами в каунтере и результаты на ктраницах вообще хер пойми какие
Делай пагинацию ручками, проблем 0. Там скорее всего ты join хватаешь в общий пул подсчета страниц и жопка выходит.
Павел
Вопросик :) Было ли у кого такое, что доктрина генерит миграцию на изменение поля, причем свойсвта то не меняются, в ролбэке - ставит дополнительно CHARACTER SET utf8mb4 NOT NULL COLLATE utf8mb4_unicode_ci. В частности у меня это на енаме в сущности. При выполнении мигарции, следующий диф генерит тоже самое опять.
Kirill
Сделает в одной транзакции
то есть можно хоть миллион сущность в цикле заполнить?
Null
В частности на любом текстовом поле.
Null
Я забил. Ничо не ломает и славно.
Null
Можешь руками вычищать каждую миграцию. Мне на второй раз уже лень стало.
Павел
Можешь руками вычищать каждую миграцию. Мне на второй раз уже лень стало.
Ну вот вычищаю, но если не вычищать, то тупо оставлять в каждой - чето не очень кажется)
Павел
Причем в паралельном проекте, нет проблем. Хоть в дебаг лезть... или попробовать обновиться...
Юра
Сделай фикс
Юра
Или форк
Юра
Такое себе но что делать ь
Павел
Возможно разные настройки базы кодировок там
Возможно, странно что по кругу гоняет бесконечному :(
Юра
Засабмить ишью им
Юра
Иногда работает
Andrei
Или форк
Или написать уже репозиторий на гольном SQL и не мучать старушку)
Andrei
быстрее бы вышло чем эти аннотации там вколачивать)
The Ant
Одно не пойму, почему вы считаете что вручную написанные миграции это плохо?
Павел
Одно не пойму, почему вы считаете что вручную написанные миграции это плохо?
Ну когда проект работает на автогенериуемых нормально, хочется продолжать)
The Ant
Ну когда проект работает на автогенериуемых нормально, хочется продолжать)
а как быть с табличками, на которые сущности вообще не натягиваются?
Павел
а как быть с табличками, на которые сущности вообще не натягиваются?
Не было кейса такого пока, ну и там есть игноры таблиц
The Ant
не не, игнор таблички это одно. Кейс когда табличка есть, а объекта под неё нету.
Павел
не не, игнор таблички это одно. Кейс когда табличка есть, а объекта под неё нету.
А что игнор под это не работает? Опять таки почему бы не сделать объект под таблицу, ну чтобы был)
The Ant
а как ты сделаешь? если она например апсерт
Павел
Я короче не совсем въезжаю в кейс)
Павел
The Ant
вот например, у меня есть сортировка "популярные за сутки". Я сделал табличку, в которой ведется статистика просмотров по часам. id | date | hour | views заполнение как раз апсертом +1 просмотры
The Ant
а выгребается всегда агрегацией