Alexey Mishurovskiy
Похоже на попытку сохранить продукт с категорией до сохранения категории. $em->persist($category); до персиста продукта должно помочь
не, там проблема в другом. дочерние объекты нормально сохраняются каскдно, но вопрос что он с ними делает
Alexander
Без кода не понятно, да
Александр II
есть в бд запись shop_categories id -1 name - телефоны я создаю новый продукт new Product (где есть ссылка на категорию) через орм /** * @ORM\ManyToOne(targetEntity=ShopCategory::class) * @ORM\JoinColumn(name="category_id", referencedColumnName="id") */ при создании продукта я делаю так new Product( category: new ShopCategory ( id: 1, name: 'телефоны' ) ) по идее запись этой категории уже есть в бд как сделать так, что бы при $this->_em->persist($product); $this->_em->flush(); он смапил категорию (id:1 вставил) а то он выдает ошибку —————————— я могу вытащить все категории, замапить, а потом записать - все будет ок но я думал можно объект кинуть и он сам замапит
Alexey Mishurovskiy
$category = ......Repository->find(id) new Product( category: $catehory )
Александр II
$category = ......Repository->find(id) new Product( category: $catehory )
так это я сразу отмел 100к товаров и каждый запрос на поиск варианта нет, что бы он сам все это замапил?
Александр II
$category = ......Repository->find(id) new Product( category: $catehory )
мне легче все в память вытащить и мапить
Alexey Mishurovskiy
а причем тут 100к товаров ?
Alexey Mishurovskiy
ну выгрузи категории 1 раз до обработки товаров
Alexey Mishurovskiy
стоит почитать вот это https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/working-with-objects.html
Юра
так это я сразу отмел 100к товаров и каждый запрос на поиск варианта нет, что бы он сам все это замапил?
Ты можешь как оптимизацию сохранять в массив связь id - category и брать оттуда если такая есть уже
Юра
еще если ты заранее знаешь айди модели ты можешь попробовать сделать лайфхак
Юра
$em->getUnitOfWork()->registerManaged(...);
Юра
только это недокументированная возможность можешь что-то сломать
Alexey Mishurovskiy
$em->getUnitOfWork()->registerManaged(...);
Не знал. Никогда не пользовался
Alexey Mishurovskiy
Спасибо
Александр II
Юра
Но если категорий не много, то я бы не парился и просто доставал их и складывал в массив. Достать запись по примари ки это очень быстрая операция. Заодно исключишь ситуацию если категории с таким айди нет в БД
Shokha
https://github.com/ElisDN/demo-project-manager/blob/master/manager/config/packages/doctrine.yaml
Shokha
тут есть же группа mappings если тут будет много это не страшно?
Shokha
Там шас User, Comment, Work общий 3! у меня примерно может быть 5-6
Shokha
https://www.doctrine-project.org/2021/05/24/orm2.9.html
Shokha
/** * @ORM\Entity() * @ORM\Table(name="users", * uniqueConstraints={ * @ORM\UniqueConstraint(name="phone_number_unique", columns={"phone_number", "type"}) * } * ) */ так рекурсивно как писать теперь? в стиле php 8
artem
Всем привет. Есть вопрос как переопределять метод контроллера с вендоров? Вчера на собесе говорили что в симфе есть такой функционал, но забыл как называется. Хотел почитать. Может кто поделиться ссылкой?
artem
Вопрос снят. Читаем декораторы
Слава
нашли блин что спросить....
artem
Ну просто не сталкивался) решил почитать. Мб пригодится в будущем
artem
Я за это писал
artem
https://symfony.com/doc/current/service_container/service_decoration.html
Alexey Mishurovskiy
А доктрина так и не умеет до сих пор брать сущности из подкаталогов, если явно об этом не указать в конфигах ?
Andrey
Внутри src/Entity берёт норм
Maxim
Всем привет, подскажите, пожалуйста как можно преобразовать объект stdClass в ассоциативный массив с наименьшим потреблением памяти ?
Vlad
``(array) $dto``
Maxim
``(array) $dto``
это будет оптимальней чем json_encode + json_decode ?
Andrey
это будет оптимальней чем json_encode + json_decode ?
Как минимум не будет момента, когда в памяти будет исходный объект, строка json и распакованный массив. А вообще, насколько велик stdClass?
Maxim
Как минимум не будет момента, когда в памяти будет исходный объект, строка json и распакованный массив. А вообще, насколько велик stdClass?
это пока просто теоретический вопрос, сейчас буду тестировать и проверять на практике, спасибо!
Maxim
через генераторы? или я чёт недопонял?
любыми способами чтобы было не затратно по памяти
Vite4eg
а stdClass откуда берётся? Нельзя сразу в виде массива данные получить?
Dmitriy
Всем привет! Подскажите где в конфигах api-platform можно изменить параметр operationId для swagger? Когда делаешь выгрузку swagger получаются такие значения operationId=app_ticketCloseBankBillAddNewControllerCollection
Dmitriy
делай json decode сразу в ассоциативный массив. 2-й параметр если что
не совсем понял. сделать выгрузку в json, потом пробежаться по всем методам и заменить названия на нужные мне?
Andrey
что там в stdClass то?
std::mechanicus
это будет оптимальней чем json_encode + json_decode ?
json-функции чрезвычайно накладны и по памяти, и по производительности
std::mechanicus
как минимум по причине валидации жсона
Maxim
json-функции чрезвычайно накладны и по памяти, и по производительности
а если использовать так (array) $object то будет быстрей преобразование работь?
std::mechanicus
H ᵘ
а если использовать так (array) $object то будет быстрей преобразование работь?
та блин) для обработки больших объемов при ограниченной памяти и придумали генератор, пользуй
H ᵘ
а что за генератор можете подсказать?
https://www.php.net/manual/ru/language.generators.overview.php
H ᵘ
а что за генератор можете подсказать?
фактически, это способ обрабатывать что-то построчно, не выгружая весь объём в память. только я не тыкал туда stdClass, но по идее должно работать
Alexey Mishurovskiy
а если использовать так (array) $object то будет быстрей преобразование работь?
Ты бы задачу целиком описал.. я вот представляю вариант появления stdClass только при декоде JSON
Alexey Mishurovskiy
и не могу представить себе ситуацию, где бы он мог бы появиться
Юра
Какие-то либы древние могут выплевывать stdClass
Sergey
Всем привет! Кто-нибудь пробовал доктрину новую (2.9) с аннотациями 8й пыхи? У меня при создании миграции не распознается новый синтаксис, не видит изменений. Doctrine-migrations ещё не готов к этому?
Vlad
Жди когда бандл доктрины обновиться до 2.4
Sergey
Вроде новый уже
Sergey
Shokha
Ребят чтобы проверить работает ли remember_me $this->denyAccessUnlessGranted('IS_AUTHENTICATED_REMEMBERED') что должен возвращать? у меня шас он вернул null
Юра
Ничего
Shokha
при логине я поставил галочку запомнить меня
Юра
Он либо кидает эксшепн либо ничего не возвращает
Shokha
remember_me: secret: '%kernel.secret%' lifetime: 604800 path: /
Shokha
а как могу я проверить работает ли у меня remember_me
Юра
Закрыть октрытл браузер
Юра
Я так понимаю это влияет на лайфтайм куки
Юра
Либо Кука переживет рестарт браузера либо нет
Shokha
чета не работает у меня remember_me с чего может быть такое
Shokha
remember_me: secret: '%kernel.secret%' lifetime: 604800 path: /
даже добавил always_remember_me: true
Shokha
все решил проблему надо было передать еще new RememberMeBadge(),