Konstantin
а если попробовать из контейнера достать Doctrine\Migrations\Configuration\Configuration
Konstantin
и вызвать у него addMigrationsDirectory ?
Konstantin
но судя по строчке public function addMigrationsDirectory(string $namespace, string $path): void { $this->assertNotFrozen(); $this->migrationsDirectories[$namespace] = $path; }
Konstantin
это можно сделать только в компайл-тайме, то есть да, только компайлер-пасс
Aleksander
и вызвать у него addMigrationsDirectory ?
ну это тоже костыль - хотел по правильному)
Konstantin
ну тут сама задача не самая удобная
Konstantin
третий вариант: сказать тому, кто подключает ваш бандл: "добавьте путь до папки с миграциями в ваш конфиг"
Konstantin
то есть вот сюда
Aleksander
в общем, всё-всё, не бейте) не место миграциям в бандле) но, другой наверное вопрос: куда писать генераторы доп. sql?
Aleksander
особенно если там не 1-2 строчки
Konstantin
чтобы было
Konstantin
doctrine_migrations: storage: table_storage: table_name: migration_versions migrations_paths: 'App\Migrations': '%kernel.project_dir%/src/Migrations'
Konstantin
migrations_paths: 'App\Migrations': '%kernel.project_dir%/src/Migrations' 'FooBundle\Migrations': '%kernel.project_dir%/../vendor/foo/bar/src/Migrations'
Aleksander
да, но это надо в app прописывать... я про то, что вот бы добавть какой то кастомный тип или переопределить атрибут Column так, чтобы при генереации diff вызывался мой код, и я мог там сгенерить что нужно по sql
Aleksander
ну и типа, дальше просто в Entity это юзать как обычно
Vlad
ну и типа, дальше просто в Entity это юзать как обычно
Тебя не смущает? ```final class Column implements Annotation```
Konstantin
он с уже скомпилированной и собранной схемой работает, наверное, можно сделать какой-то процессор ClassMetadata, но это реально не то чтобы надежно и удобно делать
Aleksander
ну я не знаю где, вот и спрашиваю, мб уже изобрели... ведь есть же разные реализации одного пхп-кода(описание Entity) для mysql/pgsql/etc...
Konstantin
да не, вряд ли. а что за задача, может можно с другой стороны к ней подойти?
Юра
Прокрути наверх. Там ссыль на якорь получилась
Konstantin
да мы тут уже выяснили, что ему не просто надо подсунуть свою папку с миграциями
Aleksander
да, конкретной задачи(проекта) нет, просто щупаю симфони на предмет рабочего инструмента) общая идея, наверное, банальная) типа напилить хорошо переиспользуемых бандлов но, есть вот каприза, типа кастомные вещи на sql... ну и вот, как пример, кастомный айдишник - там нужна доп таблица + функция... даже если писать отдельной миграцией, хотелось бы как то привязать её как зависимость к тому что будет генериться по модели, где используется этот айдишник... ну чёт как то не то... в иделале хотелось бы как то в самой модели об этом говорить, именно там где мы и говорим какой тип столбца
Konstantin
ну всегда можно напилить собственных Column, но это реально довольно объёмная работа. и я лично не до конца уверен что нужная
Aleksander
в самом то Column'е же нет никакой логики, это надо в адаптеры БД чтоли смотреть и их переопределять - ну типа как бы мы делали поддержку новой БД)
Aleksander
спасибо, хотя бы понял что не туда урылся, что миграциям в репе бандла не место) я знал конечно, но чёт запутался видимо) буду рыть дальше. спасибо!
Aleksander
Бандлы это антипаттерн, лучше уже тогда библиотеки какие то, которые можно подключать
хм. а как их тогда подключать? я думал бандл - это и есть библиотека плюс всякое от симфони-кухни чем они плохи? и почему вся симфони сам из бандлов состоит?)
Юра
Новости какие-то
Юра
А что вместо бандлов рекомендуют?
Nikolay
А что вместо бандлов рекомендуют?
В версиях Symfony до 4.0, было рекомендовано упорядочивать ваш код, используя пакеты. Это более не рекомендуется и пакеты должны быть использованы только для того, чтобы делиться кодом и функциями между многими приложениями.
Aleksander
Потому что это внутренности симфони и с 4 версии их не рекомендуется использовать
хз, я смотрю в config/bundles.php и ничего плохого не вижу в этом - почему бы туда не подключать переиспользуемые вещи... не рекомендуется, как я понял, внутри самого приложения типа незачем логику по бандлам разносить... ну так не писать же одно и то же из проекта в проект) почему бы что-то проекто-независимое не вынести бы в бандлы
Aleksander
ну так, я пока говорил про кастомные капризы на уровне sql - далеко до лолгики) резюмируя, хочу писать что-то своё в Column(или кастомном атрибуте), а потом, в месте где генерится по модели sql, чтобы мой код "добавлял" в sql что надо...
Aleksander
Кастомные типы?
да. то есть придумываем свой тип(или атрибут) и вешаем где то свой "обработчик", который уже сгенерит нужный sql вроде это единственный true way, но, вот насколько сложно, пока не понял
Юра
Ничего сложного
Юра
Почитай как в доктрине сделать свой тип
Юра
https://www.doctrine-project.org/projects/doctrine-orm/en/2.11/cookbook/custom-mapping-types.html#custom-mapping-types
Aleksander
Ничего сложного
спасибо, обнадёжил... я так то верил, но, просто только знакомплюсь, поэтому вот)
Aleksander
а где в symfony вот это правильнее написать?
Юра
Это уже в компайлер пасе бандла
Юра
не знаю надо разбираться
Юра
либо в конфиге вообще
Aleksander
блин, без компайлер-пасса, таки, не обойтись?)
Юра
открывай symfony configuration reference находи там doctrine смотри что там настраивается
Aleksander
да, попутно, а как отключить все компиляции, чтобы можно было дебажить оригиналы, а, не генереный код? я дебагом лучше учусь))
Nikolay
doctrine: dbal: url: '%env(resolve:DATABASE_URL)%' types: user_id: 'App\Auth\Infrastructure\Types\IdType' user_status: 'App\Auth\Infrastructure\Types\StatusType'
Юра
закоментить все бандлы
Aleksander
не понял)
Nikolay
не понял)
Что не понял, как типы прописать?
Aleksander
Что не понял, как типы прописать?
как при дебаге запускать оригиналы оригиналы, а не генеретый кеш
Nikolay
Aleksander
спасибо, пойду читать)
Shokha
Добрый день! Не понимаю один вещ! Пожалуйста помогите загуглить устал)) Есть такой запрос с резултатом! Все правильно работает! Если такой же запрос с кода сделать результат чу чуть по другому! +3 часик добавляется! от куда так происходить не понимаю куда копать))
Shokha
Вот результат с кодом
Shokha
Vlad
Вот результат с кодом
у тебя в пчп дефолтная ТЗ какая?
Shokha
Shokha
На девелоп сервере все нормально при этом
Aleksander
Настроить, чтобы кэширование не работало
это оно? framework: cache: app: cache.adapter.null system: cache.adapter.null services: cache.adapter.null: class: Symfony\Component\Cache\Adapter\NullAdapter arguments: [~] # small trick to avoid arguments errors on compile-time. ибо, мне не помогает - всё равно генерится куча всего в var/cache/dev
Aleksander
если не использовать функцию timezone('UTC', work_time) нормально работает! но почему с этой функцией проблема не понимаю
даты корректировать может(при выдаче) сам сервер БД в зависимости от того что про таймзону ему сообщил клиент. а вот уж как и где клиент об это сообщает и что сообщает - другой вопрос... еще, мб, если база уже кем то заполенная - мб там стояла временная зона не корректно(типа подразумевали UTC, а сервер думал MSK и у себя в UTC корректировал)... в общем, выяснить бы какая зона у автора данных... ну и, к примеру, попробовать записать туда локально - он же выдавать будет норм, именно то что записал?
Shokha
Он даже на string_time добавил + 4 каким-то образом
artem
Он даже на string_time добавил + 4 каким-то образом
Я слишком уставший чтобы читать) проверь енв
Aleksander
вот такой запрос сделал! вот результат через PDO { "conver_time": "09:00:00+00", "orginal_time": "05:00:00", "current_time": "15:54:07.301088", "string_time": "08:00:00+00" }
вероятно, у тебя на клиенте(откуда руками запрос делал) и в приложении(PDO) разные таймзоны посмотри SELECT NOW(); и там и там(и ручками с клиента + из приложения с кода)
Aleksander
хотя, select now в любом случае одно и то же покажет)
Shokha
Добрый день вчера сделал спасибо
Aleksander
что было?)
Shokha
что было?)
Настройка(таймзона) база данных! Я зашел к базу через консоль, сделал такой же SELECT там тоже +4 было) а на PhpStrom'е нет)
artem
Просто интересно. Сделал ребейс от ветки. У меня только конфликты в переводах. Можно как-то пофиксить, или нужно заново ребейсить?
artem
Там в xlf проблемы с айди. Вроде все команды по регенерации перепробовал