Konstantin
а если попробовать из контейнера достать Doctrine\Migrations\Configuration\Configuration
Konstantin
и вызвать у него addMigrationsDirectory ?
Konstantin
но судя по строчке
public function addMigrationsDirectory(string $namespace, string $path): void
{
$this->assertNotFrozen();
$this->migrationsDirectories[$namespace] = $path;
}
Konstantin
это можно сделать только в компайл-тайме, то есть да, только компайлер-пасс
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 это юзать как обычно
Konstantin
Konstantin
он с уже скомпилированной и собранной схемой работает, наверное, можно сделать какой-то процессор ClassMetadata, но это реально не то чтобы надежно и удобно делать
Aleksander
ну я не знаю где, вот и спрашиваю, мб уже изобрели... ведь есть же разные реализации одного пхп-кода(описание Entity) для mysql/pgsql/etc...
Konstantin
да не, вряд ли. а что за задача, может можно с другой стороны к ней подойти?
Юра
Юра
Прокрути наверх. Там ссыль на якорь получилась
Konstantin
да мы тут уже выяснили, что ему не просто надо подсунуть свою папку с миграциями
Aleksander
да, конкретной задачи(проекта) нет, просто щупаю симфони на предмет рабочего инструмента)
общая идея, наверное, банальная) типа напилить хорошо переиспользуемых бандлов
но, есть вот каприза, типа кастомные вещи на sql... ну и вот, как пример, кастомный айдишник - там нужна доп таблица + функция... даже если писать отдельной миграцией, хотелось бы как то привязать её как зависимость к тому что будет генериться по модели, где используется этот айдишник... ну чёт как то не то...
в иделале хотелось бы как то в самой модели об этом говорить, именно там где мы и говорим какой тип столбца
Konstantin
ну всегда можно напилить собственных Column, но это реально довольно объёмная работа. и я лично не до конца уверен что нужная
Aleksander
в самом то Column'е же нет никакой логики, это надо в адаптеры БД чтоли смотреть и их переопределять - ну типа как бы мы делали поддержку новой БД)
Aleksander
спасибо, хотя бы понял что не туда урылся, что миграциям в репе бандла не место) я знал конечно, но чёт запутался видимо) буду рыть дальше. спасибо!
Nikolay
Nikolay
Юра
Новости какие-то
Юра
А что вместо бандлов рекомендуют?
Nikolay
А что вместо бандлов рекомендуют?
В версиях Symfony до 4.0, было рекомендовано упорядочивать ваш код, используя пакеты. Это более не рекомендуется и пакеты должны быть использованы только для того, чтобы делиться кодом и функциями между многими приложениями.
Aleksander
Потому что это внутренности симфони и с 4 версии их не рекомендуется использовать
хз, я смотрю в config/bundles.php и ничего плохого не вижу в этом - почему бы туда не подключать переиспользуемые вещи... не рекомендуется, как я понял, внутри самого приложения типа незачем логику по бандлам разносить... ну так не писать же одно и то же из проекта в проект) почему бы что-то проекто-независимое не вынести бы в бандлы
Nikolay
Aleksander
ну так, я пока говорил про кастомные капризы на уровне sql - далеко до лолгики)
резюмируя, хочу писать что-то своё в Column(или кастомном атрибуте), а потом, в месте где генерится по модели sql, чтобы мой код "добавлял" в sql что надо...
Nikolay
Aleksander
Кастомные типы?
да. то есть придумываем свой тип(или атрибут) и вешаем где то свой "обработчик", который уже сгенерит нужный sql
вроде это единственный true way, но, вот насколько сложно, пока не понял
Юра
Ничего сложного
Юра
Почитай как в доктрине сделать свой тип
Юра
https://www.doctrine-project.org/projects/doctrine-orm/en/2.11/cookbook/custom-mapping-types.html#custom-mapping-types
Nikolay
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'
Юра
закоментить все бандлы
Nikolay
Aleksander
не понял)
Nikolay
не понял)
Что не понял, как типы прописать?
Nikolay
Aleksander
спасибо, пойду читать)
Shokha
Добрый день!
Не понимаю один вещ! Пожалуйста помогите загуглить устал))
Есть такой запрос с резултатом! Все правильно работает!
Если такой же запрос с кода сделать результат чу чуть по другому!
+3 часик добавляется!
от куда так происходить не понимаю куда копать))
Shokha
Shokha
Vlad
у тебя в пчп дефолтная ТЗ какая?
Nikolay
Shokha
Shokha
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
даты корректировать может(при выдаче) сам сервер БД в зависимости от того что про таймзону ему сообщил клиент. а вот уж как и где клиент об это сообщает и что сообщает - другой вопрос...
еще, мб, если база уже кем то заполенная - мб там стояла временная зона не корректно(типа подразумевали UTC, а сервер думал MSK и у себя в UTC корректировал)... в общем, выяснить бы какая зона у автора данных...
ну и, к примеру, попробовать записать туда локально - он же выдавать будет норм, именно то что записал?
вот такой запрос сделал!
вот результат через PDO
{
"conver_time": "09:00:00+00",
"orginal_time": "05:00:00",
"current_time": "15:54:07.301088",
"string_time": "08:00:00+00"
}
Shokha
Он даже на string_time добавил + 4 каким-то образом
artem
Aleksander
Aleksander
хотя, select now в любом случае одно и то же покажет)
Shokha
Добрый день вчера сделал спасибо
Aleksander
что было?)
Shokha
что было?)
Настройка(таймзона) база данных!
Я зашел к базу через консоль, сделал такой же SELECT там тоже +4 было) а на PhpStrom'е нет)
Руслан 🇲🇨
artem
Просто интересно. Сделал ребейс от ветки. У меня только конфликты в переводах. Можно как-то пофиксить, или нужно заново ребейсить?
artem
Там в xlf проблемы с айди. Вроде все команды по регенерации перепробовал