The Ant
Павел
Так, ну ок, я тоже использую инсерт ор апдейт в доктрине с автогенерацией) не пойму в чем проблема) в миграции или в чем?
The Ant
объекта нет, с чего он генерировать будет? )
Павел
в автогенерации, да
А причём тут автогенерация? Сделал сущность, назвал статистика за час. Все.
The Ant
сущность будет лежать просто для автогенерации?
Павел
сущность будет лежать просто для автогенерации?
Ну почему нет. Поидее можно и дёрнуть её для чтения) тут уже по желанию. Мне не колет например, если чисто для доктрины сделать
The Ant
ок, следующий кейс, чуть более сложный. Генерируемые колонки 😄
The Ant
особенно по формуле, их можно описать в доктрине?
Павел
особенно по формуле, их можно описать в доктрине?
Типо дефолтные значения или что? Или как?
The Ant
Это что за зверь)
в мускле (и в постгре) можно создать вирутальную колонку. которая будет генерировать автоматически, на основании других колонок
The Ant
например расчет какого нибудь цтр, где будет clicks / views
Павел
например расчет какого нибудь цтр, где будет clicks / views
А нахрена? На чтение можно или почитать в запросе или в view
The Ant
таким образом можно делать индексы для отдельных полей в джсоне, вынося их в виртуельную колонку
The Ant
не надо ебаться с триггерами
The Ant
или например создать колонку с фуллтекст поиском, конкатенировав несколько текстовых полей в один текст
Павел
Ну вот это если надо. Вопрос если не надо, то почему бы не использовать автогенерацию)
Павел
или например создать колонку с фуллтекст поиском, конкатенировав несколько текстовых полей в один текст
Вот кстати фултекст ещё реальный кейс, не пробовал в доктрину загонять
Павел
а как ты её сделаешь? )
Ну так мне не надо) зачем мне индекс по json. Вот нужно будет - буду вручную)
Павел
Json вообще как то в релиационке подразумевает поле не особо стандарт, так как это денормализованное. А ещё через него делать сложные операции - тут стоит подумать.
Павел
хз, нормальный жсон для реляционки )
ну это денормализация. Я пока не решаюсь его пихать там, где надо потом с строками работать и условиями. Вот где надо просто кучу данных запихать, без работы между ними (между строками с json) - то норм. Но это личная фобия. Да и был кейс где работали с json и поиском по ниму, в целом рабочая херня не спорю, надо уметь готовить и не бояться)
Павел
а еще возможность добавить доп поля для данных, для юзеров
Ну так если это кастомные поля, то по ним и поиск и операции врядли будут. А если не кастомные то можно и не json
The Ant
так-то да )
Юра
Ну это привязка к энтити
Юра
Поэтому говнорешение
Юра
Сам сказал сам обосрал
Юра
The Ant
ну, и еще не посортировать не нему )
Юра
Ты можешь сделать такое поле средством бд, я так понимаю проперти будет просто insertable, updatable false
Юра
И будет мапится в энтити
The Ant
так я уже написал про generated column
Сергей
Да.. У нас был json с вычисляемыми колонками.. К сожалению дикие костыли с доктриной) надо было подписываться на чтение меты
Юра
Либо написать скрипт который будет обновлять данные
The Ant
зачем? )
The Ant
вычисление можно триггером сделать, а можно виртуальной колонкой
Павел
вычисление можно триггером сделать, а можно виртуальной колонкой
Ну виртуалочка прикольная штука, но мне кажется не особо киллеровая. Для вычислений в записи - лучше использовать энтити, так как это тестируемо и domain first, а на чтении - хоть в запросе делать вычисления,хоть в пыхе, воть в view. Хотя возможно можно намутить какие нить прикольные штуки, для всяких автогенерируемых админок
Anton
Ну так если это кастомные поля, то по ним и поиск и операции врядли будут. А если не кастомные то можно и не json
Бывает что и фильтрация и сортировка по кастомным полям и тогда здравствуй EAV
Anton
Да я понял) К тому что не всегда он подходит. Хотя, вот буквально через пару недель начну делать кастомные поля на jsonb и доктрине)
The Ant
поэтому я предпочитаю ручное написание миграций, а не автомат дырявый
Юра
Ну вообще ручные миграции норм
Юра
Без них часто никак
Юра
Автоматические покрывают большую часть потребностей
Юра
Дописываем туда руками что надо и всё
Юра
Хотя в ларе нет миграций поэтому тебе наверняка это не нужно
Gleb
Ребята, я что-то затупил знатно, подскажите пожалуйста. На проде заливать первичные данные через фикстуры считается не айс. Лучше через миграцию. Миграции у нас хранятся под vcs. А как тогда первично пользователя админа залить? Светить все данные его в миграции?
Gleb
Через комманды можно, можно и через фиксутры если они не тестовые, через миграции странно
В смысле пишется консольная команда симфоневая и дергается при первичном деплое?
Павел
Например создание пользователя может быть гораздо сложнее чем просто в базу строку залить, или там несколько строк разных таблиц, зачем следать через миграции все ли ок?
Юра
Почему через миграции странно?
Gleb
Ну я так делал, когда надо админа завести
Спасибо. Надо было просидеть часа два, задать вопрос и понять почему я никак не могу миграции под env=prod достать)
Павел
Почему через миграции странно?
Ну потому что надо шифрануть пароль например, значт надо дергать пассворд энкодер, возможно пользователь - это несколько таблиц, надо все это следить и не завести систему в неконсистенцию
Gleb
Почему через миграции странно?
🤷🏻‍♂️ гугл, стэковерфлоу. Всё что находил по этому вопросу упиралось в юзайте миграции.
Павел
Проще создать CreateAdminCommand и хоть 10 админов создать когда надо
Юра
У тебя в миграции будет захешеный пароль
Dmitriy
Что то миграциями, что то сложнее то командой
Gleb
Спасибо всем! Пока стартану миграцией, но попробую переписать на команду.
Павел
Ну мб я не прав, но чет я хз, зачем для такого юзать миграции, по мне кастыль, но спорить не буду, если юзают большинство)
Gleb
С командой идея хорошая, я в эту сторону не думал.
Юра
Команда удобная штука. Если кто сервак ломанул, можно сразу админа сгенерить быстро
Юра
)
Юра
Доку написать еще
Павел
The Ant
грамотный ломатель не будет удалять или блокировать админа, он будет пытаться извлекать профит максимально долго
Павел
Вопросик ) Мессенджер удобная обертка, но в рамках одного приложения, так как десериализует в класс через unserialize. Кто какие подходы использует чтобы общаться между несколькими сервисами симфони через мессенджер? Писать свои сериализаторы и кастомные сообщения муторно, мне кажется, теряется приколюха мессенджера. Писать комманды в одних неймспейсах и структурах - как то связно слишком (но может через свои бандлы,либы общие какие то?)
Сергей
Я свои сериализаторы для транспорта писал. Видел библиотеку типа универсальную, от кого то из мейнтейнеров симфони, но чето быстро не нашёл..