netspike
))
artem
Смотря что нужно знать. Есть знакомые
Юра
Да
Dmitriy
Всем привет! Вопрос по архитектуре, у меня есть такой процесс: контроллер получает данные через api и передает их в продюсер -> продюсер отправляет данные в топик реббита. Если мне потребуется заменить rabbit, например на кафку, как оптимальным образом выстроить структуру приложения так, чтобы при таких изменениях мне не нужно было переписывать продюсера? Насколько я знаю, в java для подобной цели используют дженерики, у нас есть что-то подобное?
Юра
Может это?
Юра
https://symfony.com/doc/current/messenger.html
Egor
Или https://github.com/php-enqueue/enqueue-bundle
Dmitriy
https://symfony.com/doc/current/messenger.html
Да, я тоже думал об месенджере. Получается мне перед отправкой сообщения в mq, поставить воркера и уже ему передавать канал куда я хочу отправить данные?
Dmitriy
Или https://github.com/php-enqueue/enqueue-bundle
Про такую штуку не знал. Посмотрю, спасибо!
A.D.🈴
Простой вопрос по релейшнс. Создал энтити юзер. У юзера может быть много айтемов. И у айтема может быть много юзеров. Но у айтема есть параметр уровень, который может быть разный у разных юзеров. Это мени-ту-мени? Или как?
Юра
Это мэни ту мэни через доп энтити
Юра
Т.е. доп энтити с двумя ван ту мэни на твои энтити
Юра
Т.е. создаёшь энтити UseHasItem с тремя полями, user, item, level
A.D.🈴
То есть по сути, не мэни-ту-мэни, все-таки? С релейшнами вообще дел не имел раньше. Получается, юзер у меня создан, создаю айтем. И потом уже при создании ЮзерХезАйтем в полях юзер и айтем указываю релейшн... ван-ту-ван, нет?
Daria
То есть по сути, не мэни-ту-мэни, все-таки? С релейшнами вообще дел не имел раньше. Получается, юзер у меня создан, создаю айтем. И потом уже при создании ЮзерХезАйтем в полях юзер и айтем указываю релейшн... ван-ту-ван, нет?
Я поняла пример horse так, что это many-to-many, только уникальность в промеж.таблице достигается тремя полями (внешние ключи+уровень), а не двумя, как обычно
Юра
Да это не мени ту мени а два ван ту мени
Юра
Тебе же надо по сути доп поле в таблице которая соединяет твои энтити
Юра
Это можно сделать тремя энтити как я выше написал
Юра
У юзера не будет напрямую ссылки на айтемы, а будет ссылка еа userhasitem в которой и будет поле level
Юра
Нг ты можешь добавить юзеру например метод getItems и передать туда параметр level и получить необходимые айтемы
Юра
Или наоборот смотря что тебе нужно
Maxim Kainov
Т.е. создаёшь энтити UseHasItem с тремя полями, user, item, level
Я бы их назвал User и UserItem, а промежуточную UserUserItem
A.D.🈴
Нг ты можешь добавить юзеру например метод getItems и передать туда параметр level и получить необходимые айтемы
Не, мне надо, чтобы у юзера как бы сразу эти айтемы были. Там, по сути, 6 айтемов, и может быть либо пусто, либо какой-то айтем и у него обязательно левел от 0 до 25
A.D.🈴
Тогда уж User, Item и UserItem
Вот это кажется самым логичным. Но UserHasItem не просто так Has содержит. :) Это прям совсем понятно.
Maxim Kainov
Тогда уж User, Item и UserItem
Тогда надо у айтема префикс какой то для названия таблицы делать, потому что айтемы могут быть не только у юзеров. Смотря конечно что там за айтемы )
A.D.🈴
Есть таблица дефолтных айтемов.
A.D.🈴
Когда он к юзеру попадает - у него либо дефолтный левел 1, либо там меняться уже может.
A.D.🈴
Как бы хранения айтемов нет, они просто как... атрибут юзера. :)
Maxim Kainov
Нет, не могут быть.
Айтем такое общее слово, оно может много где встречаться
A.D.🈴
А, ок. Если слово gadjet будет? :)
A.D.🈴
Чтобы не встречалось.
Maxim Kainov
А, ок. Если слово gadjet будет? :)
Гаджет вроде что то более конкретное )
Maxim Kainov
В принципе, делай как угодно, потом переделаешь если че )
Maxim Kainov
Я бы гаджет в неймспейс юзера поместил, и кастомное название таблицы сделал user_gadjet
Maxim Kainov
App\Entity\User\Gadjet\Gadjet и App\Entity\User\Gadjet\UserGadjet
Maxim Kainov
и таблицы соответственно user_gadjet и user_user_gadjet
A.D.🈴
Там проект небольшой. Мне как-то user_user_gadjet не очень. :) Можно has gadjet? :)
Maxim Kainov
Да все равно )
A.D.🈴
Так, тогда связь, все же, ван-ту-ван из UserHasGadjet на поля user и gadjet?
Maxim Kainov
и мэни ту ван
A.D.🈴
У юзера свой гаджет, получается, в ЮзерГаджет должны быть все гаджеты. Это разве не ван-ту-ван? А вот ЮзерГаджет - Гаджет связка через ван (Гаджет) ту мэни (ЮзерГаджет).
A.D.🈴
А, блин. Ван-ту-ван - это значит из одной таблицы ОДИН и из другой таблицы ОДИН?
A.D.🈴
Как-то в raw mysql это немножко понятнее. :)
Daria
Привет! Подскажите пожалуйста, можно ли заново сгенерировать symfony.lock на основе файла composer.lock? Случился рассинхрон по комитам, не могу теперь symfony.lock проапдейтить - если заново делаю composer update, то пакеты даунгрейдятся до symfony.lock, а не наоборот (symfony.lock обновляется согласно апдейту)
Egor
symfony.lock обновляется в момент установки пакета, при обновлении пакета он не обновляется, поэтому восстановить нельзя. Но что значит рассинхрон?
Egor
Пакеты не могут даунгрейдится до symfony.lock, композер вообще туда не смотрит, только флекс
Daria
symfony.lock обновляется в момент установки пакета, при обновлении пакета он не обновляется, поэтому восстановить нельзя. Но что значит рассинхрон?
я закомитила файлы composer.json, lock, потом пришлось сделать git reset —hard HEAD, и я забыла что не закомитила symfony.lock. Короче я просто снесла vendor и сделала composer install, symfony.lock сгенерился заново)
Egor
Ну и ладно, он установил последние версии рецептов, а не те, что стояли
Egor
(Не факт что это разные версии)
Egor
Рецепты конфиги могут попортить )
Могут, но в гите же видно незакоммиченные изменения )
Anonymous
Привет! Впервые с таким столкнулся, ко мне в ветку попал чужой код, как теперь его убрать оттуда
Андрей
А как он туда попал? Cherry-pick
Anonymous
А как он туда попал? Cherry-pick
даже не знаю, может мастера криво вмержил )
Vite4eg
Ну если вмерживаешь master себе, то git притянет всё что влито в master. Это стандартное поведение
Anonymous
но на мой бранч никогда это не влияло
Vite4eg
Когда вмерживаешь себе какую-то ветку, не важно master это или нет master - это и есть процесс влияния на свою ветку ))
Vite4eg
Видать, чужой код и раньше приходил, только он был в других файлах, вы просто не пересекались
Anonymous
в том то и дело, мои файлы не затронуло, просто появились новые в моем бранче
Vite4eg
Ну это вполне себе нормлаьное поведение. Вам это мешает? Вы с какой целью master себе вливали?
Anonymous
чтобы на стагинаторе сбилдилась ветка, сейчас тим лид завернул мой код из-за этого
Vite4eg
А без master не билдится?
Anonymous
если было много изменений может упасть
Anonymous
хотя сбилдилось, на за чужой код по шапке получил )
Vite4eg
Я б попробовал на текущем месте создать ветку типа backup. Потом откатил бы свою ветку на предмержевое состояние. Потом попробоал бы сделать rebase на master. Если всё прокатит - вы получите свой бранч, в котором все не ваши файлы в актуальном состоянии, но в вашей ветке только ваши правки
Vite4eg
Либо обратиться к тимлиду за помощью ))
Anonymous
а если всем левым файлам сделать rollback?
Vite4eg
Они в истории. rollback вам не поможет. Вы ещё и в историю запишете удаление файлов
Anonymous
блин, геморрой себе нажил )
Vite4eg
rebase попробуйте. Если создадите ветку backup как я советовал - то всегда сможете вернуться туда откуда начали