Symfony Ожидаемый аргумент типа "целое число или ноль" - PullRequest
0 голосов
/ 06 мая 2019

У меня проблема, и я не знаю, как ее исправить.Я делаю CRUD для категорий на веб-сайте.

У нас может быть 2 типа категорий, categorieParent и у каждого Categorie есть одна categorieParent.

У меня естьCRUD с make:form Но когда я отправляю форму, появляется следующая ошибка:

Ожидаемый аргумент типа "целое число или ноль", "App \ Entity \ CategoryorieParent", заданный в пути к свойству "categoryorie_parent_id".

Вот моя сущность:

Категория

<?php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\CategorieRepository")
 */
class Categorie
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $categorie_intitule;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\CategorieParent", inversedBy="categorie_id")
     */
    private $categorie_parent_id;


    public function __construct()
    {
        $this->categorie_id = new ArrayCollection();
        $this->categorie_id_1 = new ArrayCollection();
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getCategorieIntitule(): ?string
    {
        return $this->categorie_intitule;
    }

    public function setCategorieIntitule(string $categorie_intitule): self
    {
        $this->categorie_intitule = $categorie_intitule;

        return $this;
    }

    /**
     * @return Collection|Produit[]
     */
    public function getCategorieId1(): Collection
    {
        return $this->categorie_id_1;
    }

    public function addCategorieId1(Produit $categorieId1): self
    {
        if (!$this->categorie_id_1->contains($categorieId1)) {
            $this->categorie_id_1[] = $categorieId1;
            $categorieId1->setCategorieId1($this);
        }

        return $this;
    }

    public function removeCategorieId1(Produit $categorieId1): self
    {
        if ($this->categorie_id_1->contains($categorieId1)) {
            $this->categorie_id_1->removeElement($categorieId1);
            // set the owning side to null (unless already changed)
            if ($categorieId1->getCategorieId1() === $this) {
                $categorieId1->setCategorieId1(null);
            }
        }

        return $this;
    }

    public function getCategorieParentId(): ?int
    {
        return $this->categorie_parent_id;
    }

    public function setCategorieParentId(?int $categorie_parent_id): self
    {
        $this->categorie_parent_id = $categorie_parent_id;

        return $this;
    }

    public function addCategorieParentId(self $categorieParentId): self
    {
        if (!$this->categorie_parent_id->contains($categorieParentId)) {
            $this->categorie_parent_id[] = $categorieParentId;
        }

        return $this;
    }

    public function removeCategorieParentId(self $categorieParentId): self
    {
        if ($this->categorie_parent_id->contains($categorieParentId)) {
            $this->categorie_parent_id->removeElement($categorieParentId);
        }

        return $this;
    }


}

** КатегорияParent **

<?php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\CategorieParentRepository")
 */
class CategorieParent
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $categorie_intitule;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Categorie", mappedBy="categorie_parent_id")
     */
    private $categorie_id;

    public function __construct()
    {
        $this->categorie_id = new ArrayCollection();
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getCategorieIntitule(): ?string
    {
        return $this->categorie_intitule;
    }

    public function setCategorieIntitule(string $categorie_intitule): self
    {
        $this->categorie_intitule = $categorie_intitule;

        return $this;
    }

    /**
     * @return Collection|Categorie[]
     */
    public function getCategorieId(): Collection
    {
        return $this->categorie_id;
    }

    public function addCategorieId(Categorie $categorieId): self
    {
        if (!$this->categorie_id->contains($categorieId)) {
            $this->categorie_id[] = $categorieId;
            $categorieId->setCategorieParentId($this);
        }

        return $this;
    }

    public function removeCategorieId(Categorie $categorieId): self
    {
        if ($this->categorie_id->contains($categorieId)) {
            $this->categorie_id->removeElement($categorieId);
            // set the owning side to null (unless already changed)
            if ($categorieId->getCategorieParentId() === $this) {
                $categorieId->setCategorieParentId(null);
            }
        }

        return $this;
    }
    public function __toString()
    {
        return $this->categorie_intitule;
    }

}


Можете ли вы объяснить мне, что я не так?Большое спасибо.

1 Ответ

2 голосов
/ 06 мая 2019

Посмотрите на эту часть:

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\CategorieParent", inversedBy="categorie_id")
 */
private $categorie_parent_id;

Хотя имя вашего атрибута categorie_parent_id, оно не будет возвращать идентификатор. Доктрина гидратирует это поле в объект. Вместо этого он вернет объект CategorieParent (или null). Попробуйте удалить часть имени этого атрибута _id, поскольку она содержит не целое число, а объект.

Обновите ваши методы:

public function getCategorieParentId(): ?CategorieParent
{
    return $this->categorie_parent_id;
}

public function setCategorieParentId(?CategorieParent $categorie_parent_id): self
{
    $this->categorie_parent_id = $categorie_parent_id;

    return $this;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...