@T_verdisla_V
Начинающий

Как понимать данную ошибку?

Здравствуйте. Подскажите что означает данная ошибка?
Argument 1 passed to Shop\Entity\Products::setCategory() must be an instance of Shop\Entity\Category or null, string given, called in C:\xampp\htdocs\zblog.local\module\Admin\src\Service\ProductsManager.php on line 148
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
@T_verdisla_V Автор вопроса
Начинающий
Решение было найдено, возможно не совсем оптимальное, но всетаки решение.
В ProductsManager.php нужно было внести следующие изменения:
public function addNewProduct($data) 
    {
        // Создаем новую сущность Post.
        $product = new Products();
        
        $product->setName($data['name']);
        $product->setPrice($data['price']);
        $product->setDescription($data['description']);
        $product->setStatus($data['status']);
        
        // Добавляем сущность в менеджер сущностей.
        $this->entityManager->persist($product);
        
        // Добавляем теги к посту.
        $prod = $this->addCategoryToProduct($data['category_id']);
                $product->setCategory($prod);
        // Применяем изменения к базе данных.
        $this->entityManager->flush();
    }    
    
    // Добавляет/обновляет теги в заданном посте.
    private function addCategoryToProduct($prodCat) 
    {   
        // Добавляем категории к продуктам
            $category = $this->entityManager->getRepository(Category::class)
                      ->find($prodCat);
            if ($category == null){
                $category = new Category();
            }  
            return $category;
    }

Т.е. добавить еще один метод который бы возвращал экземпляр класса Category. Для более сложной бизнес-логики необходимо будет вносить дополнения (методы) в саму Entity.
Может кому-то пригодится мой ответ.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
difiso
@difiso
В параллельной вселенной я космонавт
В функцию setCategory() вы передали в параметре строку. А надо объект класса Shop\Entity\Category или null.
Сначала получите объект категории, а потом уже присваивайте ее товару.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы