artem
Атцукерберг?
Я хз. Мы с ним в маке встречались. Видно знатный человек, раз может себе это позволить
Юра
Небось дабл чиз брал а не обычный
artem
Небось дабл чиз брал а не обычный
Он мне за graphql биг тейсти заказал!
artem
Но не оплатил(
Юра
Но не оплатил(
Рест апи глюконуло, платеж не дошёл
Юра
Вот так вот без атомарных транзакций работать
artem
Шутки конечно весело, но тс нужно либу закинуть. Пускай копает. Я уже года 3 не юзаю
Null
Объясните, зачем если у меня 5 аутентификаторов, даже если первый уже авторизовал юзера, следующие все равно дергаются? Ну, типа, какой тут может быть кейс? В первом юзера нашли, во втором юзера еще раз нашли? А если первый скажет что это юзер А, а второй юзер Б? И если мне надо, чтобы для определенного роута валидным был только конкретный аутентификатор - это писать отдельным фаерволом, получается?
The Ant
Почитал ваш тред про атомарность. У меня возник вопрос, а как быть с пакетными операциями? Вы что, никогда массовым апдейтом или созданием не занимались?
Павел
Ну и опять таки, тред был не про атомарность
The Ant
А в чем проблема?
в сохранении, каждой единицы отдельно, без глобального флаша
Павел
в сохранении, каждой единицы отдельно, без глобального флаша
А как делали по старинке? Транзакция явная.
The Ant
транзакция в форыче )
Павел
транзакция в форыче )
Почему в форыче
Павел
Над ним
The Ant
так надо сохранить пакетно, но не в одной транзакции
The Ant
транзакция подразумевает всё или ничего
The Ant
в пакетных операциях вполне можно записать ошибки, а остальное сделать
Павел
так надо сохранить пакетно, но не в одной транзакции
Ты определись в вопросе что ты хочешь, атомарно или нет
Павел
или несколько атомарных пакетных транзакций
Павел
Короче при любомом подоходе все нормально работает и можно организовать без проблем
The Ant
Юра просто топил за флаш в мидлваре общий, и типо других не должно быть, потому что не удобно. Я и спрашиваю, а как же пакетные операции?
Павел
Юра просто топил за флаш в мидлваре общий, и типо других не должно быть, потому что не удобно. Я и спрашиваю, а как же пакетные операции?
Он за это вроде не топил, это я предложил как еще одна оптимизация типо если лень делать явную транзакцию, чего ты деаешь флаш, можно в мидле
Павел
Юра просто топил за флаш в мидлваре общий, и типо других не должно быть, потому что не удобно. Я и спрашиваю, а как же пакетные операции?
Опять таки вложенные транзакции работают за счет сейвпоинтов и можно организовать то что ты хочешь
Павел
Ну по крайней мере там где сейв поинты есть
The Ant
внешняя транзакция примется только если вложеннные все будут выполнены
The Ant
да и не нужна она
Павел
Просто на кой черт тогда сейвпоинты тогда вообще нужны
The Ant
хз, какой смысл транзакции если оно половину сохранило, а половину нет?
The Ant
да и не читал про сейвпоинты :D походу фишка постгреса
The Ant
Просто на кой черт тогда сейвпоинты тогда вообще нужны
почитал, чтобы были доступны изменения в транзакции, но редактирование на этом этапе еще не зафиксировано. многоуровневая транзакция все равно сохранится только если все вложенные будут закоммитчены, ACID же
The Ant
не должны быть ролбекнуты, транзакция же
The Ant
Так там же не рандом, а конкретные точки
ну пишут чтобы получить изменения. например ид какой
Павел
ну пишут чтобы получить изменения. например ид какой
id можно получить вроде и без сейвпоинта
The Ant
не уверен... бля тупой разговор конечно
Павел
The Ant
пора, ага )
Павел
не должны быть ролбекнуты, транзакция же
Не в продолжение разговора, а так если вдруг копаешь - там ролбэк ту сейвпоинт есть. Короче надо разбираться, а то оба не шарим и беседы ведем)
The Ant
Тану нафиг забивать голову ерундой ) Понадобятся вложенные транзакции будем изучать
The Ant
вчера вот понадобилось разрулить сотни скапливающихся запросов с select for update. Узнал что есть дополнение к ней SKIP LOCKED, из названия думаю понятно. Вжух и очередь стала пустая. Это в тему пакетных операций :D
Миша
Привет всем, кто нибудь в курсе, зачем при описании ManyToOne указывать inversedBy, если в оф документации Doctrine сказано что он не обязательный. Попробовал не задать его и загрузить фикстуры с пересозданием БД - всё норм. Оно нужно вообще?
Anton
Видимо когда-то было нужно)
Миша
Видимо когда-то было нужно)
А вы задаёте его в обыденной практике?
Миша
а у тебя только ману ссылаются на оне, или оне тоже обращается к ману?
Двунаправленная связь. То есть на стороне One тоже есть свойство содержащее коллекцию стороны Many.
Anton
А вы задаёте его в обыденной практике?
make:entity его не ставит. Руками тоже не ставлю.
Anton
подозреваю что если у вас 2 одинаковых m2m связи - их как-то нужно будет отличать)
Anton
Вот для этого и сделано
Миша
Да нет, код не чужой, это я решаю как сделать. Связь не m2m. M2o и o2m
Vlad
Так что в итоге с флашерами😂
Vlad
Я пол часа читал, где вывод)
Anton
Да нет, код не чужой, это я решаю как сделать. Связь не m2m. M2o и o2m
Да не суть) Опять же, если связей несколько до одинаковых сущностей нужно указать какая куда относится.
Миша
Да не суть) Опять же, если связей несколько до одинаковых сущностей нужно указать какая куда относится.
А вот это вряд ли. Просто у OneToMany есть жёсткое требование указывать MappedBy, а это уже позволяет взаимнооднозначно проследить что куда маппится.
Юра
Главное чтобы doctrine:schema:validate был доволен
Миша
Главное чтобы doctrine:schema:validate был доволен
Вот он-то и не доволен кстати.
Artem
Добрый вечер) Снова вопрос по api-platform. Пытаюсь реализовать такую схему. Один endpoint создает разные сущности в зависимости от атрибута в теле запроса. Через Processor пытаться внести логику, уже поздно. А через denormalize не получается перебить Post(). Что ещё можно попробовать? P.S.Под капотом InheritanceType('SINGLE_TABLE') Get Patch Delete отрабатывают отлично.
Artem
Сделать разные ендпоинты
В текущий момент так и работает. Просто хотелось как-то через один endpoint централизовано это оставить.
Nikolay
В текущий момент так и работает. Просто хотелось как-то через один endpoint централизовано это оставить.
На флагах как выше описано, лучше не надо так. У такого подхода никаких преимуществ нет
Artem
На флагах как выше описано, лучше не надо так. У такого подхода никаких преимуществ нет
При создании сущности, в зависимости от выбранного типа не нужно отправлять запросы на разные endpointы) Как один из плюсов)
artem
Fos rest
Artem
Добрый вечер) Снова вопрос по api-platform. Пытаюсь реализовать такую схему. Один endpoint создает разные сущности в зависимости от атрибута в теле запроса. Через Processor пытаться внести логику, уже поздно. А через denormalize не получается перебить Post(). Что ещё можно попробовать? P.S.Под капотом InheritanceType('SINGLE_TABLE') Get Patch Delete отрабатывают отлично.
Пока добился желаемого результата через: services: App\ApiPlatform\Listeners\RequestListener: tags: - { name: kernel.event_listener, event: kernel.request, priority: 29 } и переопределение _api_resource_class и _api_operation_name. Выглядит как-то не очень) Мб какие-то стандартные возможности api-platform успускаю для реализации кейса? P.S. Подняв priority до 251, добился нужного результата переопределением только одной переменной - REQUEST_URI Решение итоговое через https://api-platform.com/docs/core/serialization/#changing-the-serialization-context-dynamically
Thawne
Всем добрый день, не могли бы подсказать. Есть классы Customer и Jobs, OneToMany, в таблице jobs поле customer_id все по дефолту. И что бы получить Job’ы клиента я в serializer сделал вот так, но проблема в том что теперь он везде тянет джобы клиента, даже где я получаю джоб с клинентом он туда еще и джобы снова лепит и получается вот так джоб->клиент->еще миллион джоб. В какую сторону мне вообще что то делать?
Al
Добрый день коллеги!) Я написал функционал который использует аннтоации для методов, все отлично работает, но мой подход для чтения аннотаций подразумевает использование рефлексии на проде, хотелось бы узнать, как используя встроенные механизмы симфы, а в частности кеширования, можно этого избежать
Иван
невозможно ответить, не зная контекста
Иван
но у меня есть правило, если в рантайме надо лезть в рефлексию, что или сокрытие сломано или надо было через генерацию кода решать
Al
невозможно ответить, не зная контекста
Какой контекст нужен? Мне просто нужно в рантайме иметь доступ к аннотациям метода у сервиса
Иван
аннотация - константная строка значит может быть отображена в код при сборке контейнера
Al
Верно, а конкретнее
Иван
зависит от того, что ты хочешь