Size: a a a

2021 December 24

D

Dmitry in symfony
флаш вызываете ?
источник

D

Dmitry in symfony
учитываете что консьюмер это по сути демон работающий непрерывно ?
источник

M

MyWay in symfony
да, флашу в конце, все как обычное создание записи
источник

D

Dmitry in symfony
и что пишет ? какие ошибки ?
источник

M

MyWay in symfony
A new entity was found through the relationship 'ActivityJournalBundle\Entity\UserActivity#user' that was not configured to cascade persist operations for entity: Igor. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}).","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException { …}]
источник

M

MyWay in symfony
если без очереди, то все окей создает, а здесь такая херня
источник

D

Dmitry in symfony
em->clear вызываете ?
источник

M

MyWay in symfony
нет, не знаком с этой функцией
источник

M

MyWay in symfony
можно подробнее?
источник

M

MyWay in symfony
и как его применить правильно?
источник

D

Dmitry in symfony
ну судя по всему либо вы как-то не так создаете сущность (что вероятнее) либо же не учитываете логику работы консьюмера
поэтому на вашем месте я бы сначала очистил UoW перед процессингом сообщения из очереди - для надежности
а потом бы разбирался с тем как вы там сущность создаете в очереди
источник

D

Dmitry in symfony
подозреваю что вы пропускаете в своем сознании какую-то закулисную работу фреймворка или самой доктрины, который происходит не в консьюмере, а в консьюмере ее нет
источник

M

MyWay in symfony
да, я тоже думаю за это
первый раз работаю с очередями, потому и не знаю все нюансов здесь
источник

D

Dmitry in symfony
я так понял у вас две сущности User и UserActivity ?
источник

D

Dmitry in symfony
они связаны через OneToMany ?
источник

M

MyWay in symfony
да, так и есть + еще клиент, по той же схеме
источник

M

MyWay in symfony
но там такая же ошибка валится, когда персищу
источник

D

Dmitry in symfony
покажите код персиста из очереди
источник

D

Dmitry in symfony
и из другой части где работает
источник

M

MyWay in symfony
Очередь:
   public function createRecord(object $model)
   {
       $record = new UserActivity();
       $record
           ->setUser($model->getUser())
           ->setActionType(1)
           ->setEntityId($model->getEntity()->getId())
           ->setEntityName(get_class($model->getEntity()));

       $this->em->persist($record);
       $this->em->flush();
   }

Обычная:
       /** @var UserActivityModel $item */
       foreach ($this->chain as $item)
       {
           $record = new UserActivity();
           $record
               ->setEntityName(get_class($item->getEntity()))
               ->setUser($user)
               ->setEntityId($item->getEntity()->getId())
               ->setActionType(1);

           $this->em->persist($record);
       }
       $this->em->flush();
источник