Как правильно задать связь ManyToMany при обработке формы, чтобы не было ошибки Undefined Index?

Есть сущности Order и Product. Между ними прописана связь ManyToMany:

App\Entity\Order.php

/**
 * @ORM\ManyToMany(targetEntity=Product::class, inversedBy="orders", cascade={"persist"})
 */
private $products;

App\Entity\Product.php

/**
 * @ORM\ManyToMany(targetEntity=Order::class, mappedBy="products")
 */
private $orders;

В сущности Order есть метод для добавления связанных продуктов:

public function addProduct(Product $product): self
{
    if (!$this->products->contains($product)) {
        $this->products[] = $product;
    }

    return $this;
}

Вот код, которым создаю пользователя, заказ и привязываю к заказу продукты из корзины пользователя. Именно здесь и происходит ошибка. В $product['product'] экземпляр класса Product из корзины.

App\Controller\CheckoutController.php

$user = new User();
$password = $this->encoder->encodePassword($user, $data['password']);
$user->setEmail($data['email']);
$user->setUsername($data['username']);
$user->setFirstName($data['first_name']);
$user->setLastName($data['last_name']);
$user->setPassword($password);
$user->setRoles('ROLE_USER');

$em->persist($user);
$em->flush();

//Создаем новый заказ.
$order = new Order();
$order->setUserId($user);
$order->setDate(new \DateTime());
$order->setStatus('new');
$order->setTotal($this->cartService->getTotal());
        
//Проблемный участок кода. Без него все работает нормально
foreach ($this->cartService->getCartContent() as $product) {
   $order->addProduct($product['product']);
}

$em->persist($order);

$em->flush(); // Ошибка на данной строке, судя по дебаггеру Симфони.

Ниже скриншот ошибки. Насколько я понимаю, он не может корректно проставить связи между заказом и продуктами из заказа.

Сриншот ошибки

Забыл уточнить, что корзина лежит в сессии. В самой сесси уже готовые объекты товаров. Видимо, в этом и проблема.


Ответы (0 шт):