IgorPI
@IgorPI

Как разрешить проблему ArrayCollection::__construct() must be of the type array, object given?

Проблема следующая...

Всё как в мануале, возможно есть какие-то несоответствия, мне хотелось бы их найти
5d23c8960da52018729312.png

Тут как бы мусолить нечего

вот код

...
    /**
     * @ORM\ManyToMany(targetEntity="App\Model\Extras\Extras")
     * @ORM\JoinTable(
     *     name="product_extras", joinColumns={
     *          @ORM\JoinColumn(name="product_id", referencedColumnName="id")},
     *     inverseJoinColumns={
     *          @ORM\JoinColumn(name="extras_id", referencedColumnName="id")}
     * )
     */
    private $extras;

    /**
     * Product constructor.
     */
    public function __construct()
    {
        $this->extras = new ArrayCollection();
    }

    /**
     * @param Extras $extras
     */
    public function addExtras(Extras $extras = null): void
    {
        $this->extras->add($extras);
    }


Далее...

/** @var Extras $item */
        foreach ($this->extrasRepository->findBy(["id" => $extras_criteria]) as $item){
            $product->addExtras($item);
        }


Ну такая банальщина, что даже стыдно.
Доктрина от меня требует, что бы $product->extras был массивом (ArrayCollection)

Что не так?
  • Вопрос задан
  • 523 просмотра
Пригласить эксперта
Ответы на вопрос 1
IgorPI
@IgorPI Автор вопроса
Ответ, будьте внимательны, может дело не в подозреваемом участке кода, как в моём случае.

Я предполагал, что ошибка закралась в foreach ...
Так как в ошибке упоминалось о "ArrayCollection::__construct()"

Ошибка была в $product->setProductType
В методе $product->setProductType нет не какого ArrayCollection

$product = new Product();
        $product->setProductType($this->productTypeRepository->getById($this->request->mixed("productType")));
        $product->setName($this->request->mixed("name"));
        $product->setPrice($this->request->mixed("price"));
        $product->setCountMin($this->request->mixed("countMin"));
        $product->setCountMax($this->request->mixed("countMax"));
        $product->setShortDescription($this->request->mixed("shortDescription"));
        $product->setLongDescription($this->request->mixed("longDescription"));

        $extras_criteria = explode(",", $this->request->mixed("extras")) ;

        /** @var Extras $item */
        foreach ($this->extrasRepository->findBy(["id" => $extras_criteria]) as $item){
            $product->getExtras()->add($item);
        }
Ответ написан
Ваш ответ на вопрос

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

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