Size: a a a

2021 June 22

AM

Alex Mikhaylov in symfony
спасибо за наводку
источник

ВП

Влад Полтораков... in symfony
всем привет
проблема с messenger component, подскажите, куда копать

добавил в messenger.yaml очередь, стандартно:
     queue_name: 'dns_path...'

навешал воркер в 1 поток, grep по процессам показывает, что всё в 1ом потоке
в очередь улетает верное количество сообщений - сколько дёрнули, столько и залетело
в хэндлере, который обрабатывает эту очередь, идёт запись в логи и запись в базу
всё выполняется до последней строчки, нигде нет ошибок, только вот и в базе и в логах по 3-4 дубля

оборачивал в try ... catch (Throwable) всё, что есть в хэндлере - ошибок нет
проверял соединение с базой после записи - тоже всё ок, разрывов и ошибок нет
процесс работает точно 1

подскажите, в чём может быть проблема?

если бы были ошибки - было бы понятно, что уходит в ретраи
но ошибок нет, да и retry_strategy ради инетереса ставил в 0, тоже без изменений
источник

YB

Yuri Barsukov in symfony
Добрый день всем.
подскажите пожалуйста.
у меня есть некий агрегат, у которого есть некие дочерние сущности:
class Aggregate
{
   /**
    * @var Node[]
    *
    * @ORM\OneToMany(targetEntity="Node", mappedBy="parent", cascade={"persist", "remove"})
    */
   private $nodes;

   public function deleteNodeById(int $id):
   {
       $node = $this->findNodeById();
       
       $this->nodes->remove($node);

       return $node;
   }
}

Для этих сущностей настроены связи через доктрину.
Вопрос, могу ли я(и если могу, то как?) написать метод deleteNodeById таким образом, чтобы послего его вызова, мне осталось только вызвать EntityManager::flush()?
сейчас, чтобы всё работало, мне нужно еще вызвать EntityManager::remove($node); перед вызовом flush

я посчитал, что указание cascade={"persist", "remove"} в аннотации связи будет достаточно. но ошибся. :(
дальше не знаю, куда копать.
заранее спасибо, за ответ.
источник

AK

Anton K. in symfony
внутри самой сущности - нет. судя по коду у вас именно связь удаляется, но не сама node. чтобы node удалилось, как вы сами заметили - надо вызвать $em->remove($node);, который не тянут в сущность
источник

AK

Anton K. in symfony
как вариант я бы рассмотрел возможность сделать метод в репозитории с таким же названием
источник

YB

Yuri Barsukov in symfony
да, спасибо. сейчас так и реализовано.
значит оставлю так, как есть.
источник

В

Вадим in symfony
orphanRemoval попробуйте. Но это не агрегат тогда, если из вне решают кто и что будет удалять
источник

YB

Yuri Barsukov in symfony
спасибо. гляну сейчас, что это за зверь такой.
источник

YB

Yuri Barsukov in symfony
прошу прощения, за возможно глупый вопрос. разобраться хочу
а в чем концептуально проблема тогда будет?
у меня есть агрегат, который позволяет через себя работать с дочерними сущностями(добавлять, удалять, менять порядок)
и соотвественно я хочу, чтобы корректно работало удаление, через вызов всего одного метода.
источник

YB

Yuri Barsukov in symfony
или я неверно понимаю концепцию агрегата?
источник

В

Вадим in symfony
id дочерней сущности откуда знают?
источник

YB

Yuri Barsukov in symfony
из списка, который этот же агрегат может предоставить.
источник

YB

Yuri Barsukov in symfony
основная мысль, которая у меня была, когда я это всё проектировал -
есть агрегат, есть дочки.
через агрегат можно добавить-удалить сущность. т.к., имхо, это правильно.
но при этом, так же можно получить и список дочек этого агрегата, например для отображения на фронте.
источник

YB

Yuri Barsukov in symfony
а дальше уже клиент может, например, удалить какой-то из дочерних элементов.
источник

AK

Alexander Kurochka in symfony
Приветы. Есть знатоки соната админ?)) Есть админ-класс, в нем вложенный класс (через кнопку добавит еще), в нем в свою очередь - еще один вложенный админ-класс.
Но когда последний вложенный класс  пытаюсь получить - ошибка: Could not get element id from s60d1efac82a7f_characteristics_0_dimensions Failing part: dimensions
На форумах говорят добавить не пустой input - но не помогает.
источник

DG

Dmitry Gerasin @thed... in symfony
Всем привет!
подскажите пож как обычный proxy(перенаправление на другой адрес со всеми загаловками и всей инфой) на симфони делается ?

вот мой код
/**
*
@Route@Route("/api/{external}", name="_external", requirements={"external" = ".+"})
*/
public function
index(string $external, Request $request): Response
{

  $this->client->request(
//            $request->getMethod(),
//            $service
.$external,
//            $request->getContent()

)
return new Json();
}
адекватен ли данный подход ? или у симфы есть готовые решения ?
источник

AK

Anton K. in symfony
$this->client это какой-нибудь Guzzle?
источник

в

вαғғσмεттι in symfony
а не лучше это через веб сервер делать?
источник

DG

Dmitry Gerasin @thed... in symfony
стандартный httpSymfony
источник

DG

Dmitry Gerasin @thed... in symfony
задавался таким же вопросом
но треования определили, что нужно впихивать еще логику в этот момент
например : проксируем наш запрос в эндпоинт и вписываем что-то куда-то , например в базу
источник