Я не понимаю, как получить доступ к продукту, связанному с CartLine.
У меня есть два объекта
Объект CartLine:
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Product", inversedBy="cartLines")
* @ORM\JoinTable(name="cart_line_product")
*/
private $product;
public function __construct()
{
$this->product = new ArrayCollection();
}
/**
* @return Collection|Product[]
*/
public function getProduct(): Collection
{
return $this->product;
}
Сущность товара:
/**
* @ORM\ManyToMany(targetEntity="App\Entity\CartLine", mappedBy="product")
*/
private $cartLines;
public function __construct()
{
$this->cartLines = new ArrayCollection();
}
/**
* @return Collection|CartLine[]
*/
public function getCartLines(): Collection
{
return $this->cartLines;
}
Далее я добавляю товар в корзину через форму, например так:
if ($form->isSubmitted() && $form->isValid()) {
$cartLine = new CartLine();
$cartLine->addProduct($product);
$em->persist($cartLine);
$em->flush();
Товар добавляется, как и ожидалось.
Затем я пытаюсь отобразить продукты в корзине:
$id = $this->getUser()->getCart()->getId();
$cartline = $cartLineRepo->findAllCartLineByUser($id);
, затем в шаблоне
{% for cart in cartline.id %} //OR {% for cart in cartline.product.id %}
<div class="item">
</div>
{% endfor %}
Я получаю ошибку Key "id" for array with keys "0, 1, 2, 3" does not exist
Или вызов в контроллере
$cart = $this->getDoctrine()->getRepository(CartLine::class)->findAll();
foreach ($cart as $value){
$id = $value->getProduct()->getId();
}
Я получаю ошибку Attempted to call an undefined method named "getId" of class "Doctrine\ORM\PersistentCollection".
Как получить связанный объект или как его исправить?