@vladislav997

Как добавить запись в промежуточную таблицу без создания нового объекта?

Подскажите, как добавить запись в промежуточную таблицу без создания нового объекта в Symfony?

Есть вот такой код:
$subscriber = $em->getRepository(Subscribers::class)->findOneBy(['id' => 1);
$subscriber->addBot($bot); // $bot - это сущность
$em->persist($subscriber);
$em->flush();

И в результате ничего не произойдет.
Суть вообще такая: в бд хранится много ботов (отдельная сущность), у них связь с subscribers - many to many. и смысл в том, что один юзер может принадлежать нескольким ботам. и вот когда юзер впервые записывается в бд, то происходит и запись в промежуточную таблицу, но если юзер написал второму боту, то мы его не должны заносить второй раз, а должны добавить запись просто в промежуточную таблицу. для этого соот-но я поставил проверку на "если существует, то второй раз не записываем, а делаем только запись в промежуточную табл".
полный код

$findSubscriber = $em->getRepository(Subscribers::class)->findOneBy(['subscriber_id' => $subscriber['message']['from']['id']]);

            if(!$findSubscriber) {
                $subscribers = new Subscribers();

                $subscribers->setUsername($subscriber['message']['from']['username']);
                $subscribers->setSubscriberId($subscriber['message']['from']['id']);
                $subscribers->addBot($bot);
                $em->persist($subscribers);
                $em->flush();
                // здесь отрабатывает нормально
            }
            else {
                foreach ($bot->getSubscribers()->toArray() as $botSubscriber) {
                    if ($botSubscriber->getSubscriberId() != $subscriber['message']['from']['id']) {
                        $findSubscriber->addBot($bot);
                        $em->persist($findSubscriber);
                        $em->flush();
                        // не отрабатывает
                    }
                }
            }

  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
NickPush
@NickPush
Web разработчик
тут надо посмотреть классы что лежат в Entity. покажи что там?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы