У меня есть сущность Wishlist, которая связана с сущностью Product с помощью аннотации MTM Doctrine.У меня есть определение, что $products
является Array Collection
в __construct () списка пожеланий, и поэтому у меня есть методы addProduct()
и removeProduct()
.Итак, класс имеет следующий вид:
<?php
namespace WishlistBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use ShopBundle\Entity\Product;
/**
* Wishlist
*
* @ORM\Table(name="wishlist")
* @ORM\Entity()
*/
class Wishlist
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="ShopBundle\Entity\Product")
* @ORM\JoinTable(
* name="mtm_products_in_wishlists",
* joinColumns={
* @ORM\JoinColumn(
* name="wishlist_id",
* referencedColumnName="id"
* )
* },
* inverseJoinColumns={
* @ORM\JoinColumn(
* name="product_id",
* referencedColumnName="id",
* unique=true
* )
* }
* )
*/
private $products;
...
/**
* @param Product $product
*/
public function addProduct(Product $product)
{
$this->products->add($product);
}
/**
* @param Product $product
*/
public function removeProduct(Product $product)
{
$this->products->remove($product);
}
/**
* Get products.
*
* @return string
*/
public function getProducts()
{
return $this->products;
}
/**
* Wishlist constructor.
*/
public function __construct()
{
$this->products = new ArrayCollection();
}
}
В моем контроллере у меня есть место, где я пытаюсь использовать метод removeProduct()
.Я использую его следующим образом:
$wishlist->removeProduct($product);
Но я получаю следующую ошибку:
Предупреждение: недопустимый тип смещения в isset или пуст (500 Internal Server Error)
Он находится на линии в
vendor\doctrine\collections\lib\Doctrine\Common\Collections\ArrayCollection.php at line 126
Он имеет следующий вид:
public function remove($key)
{
if ( ! isset($this->elements[$key]) && ! array_key_exists($key, $this->elements)) {
return null;
}
}
В то же время addProduct()
работает нормально.Что я делаю не так?Как решить эту проблему?