Подскажите, как добавить запись в промежуточную таблицу без создания нового объекта в 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();
// не отрабатывает
}
}
}