Как сделать POST-запрос с сущностью, которая имеет сущность в своем конструкторе? - PullRequest
0 голосов
/ 29 января 2019

Я снова пробежался по учебнику API-платформы , и я застрял, имея дело с сущностями, имеющими отношения

Вот ошибка, возвращаемая API

Cannot create an instance of App\\Entity\\Comment from serialized data because its constructor requires parameter \"House\" to be present.

Сущности созданы таким образом, потому что они уже используются в традиционной форме Symfony (после этого я добавил пакет api-core).

С возвращенной ошибкойи насколько я понимаю документацию, я, конечно, должен сделать собственный сериализатор и использовать группу сериализации, но не совсем уверен.

Если кто-то может указать направление, которому я должен следовать, это будет здорово!

Спасибо, все

 /**
  * @ORM\Entity(repositoryClass="App\Repository\CommentRepository")
  * @ApiResource
  */
 class Comment
 {

use ORMBehaviors\Timestampable\Timestampable,
    CustomTrait\Identifiable
;

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\House", inversedBy="comments")
 */
private $house;


/* others properties*/

public function __construct(House $house)
{
    $this->house = $house;
}


 public function getHouse(): ?House
{
    return $this->house;
}

public function setHouse(?House $house): self
{
    $this->house = $house;

    return $this;
}

/* others Getters&Setters */

Дом сущности

 /**
  * @ORM\Entity(repositoryClass="App\Repository\HouseRepository")
  * @ApiResource
  */
 class House
 {

use ORMBehaviors\Timestampable\Timestampable;

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\OneToMany(targetEntity="App\Entity\Comment", mappedBy="house")
 */
private $comments;


/* others properties*/

public function getComments(): Collection
{
    return $this->comments;
}

public function addComment(Comment $comment): self
{
    if (!$this->comments->contains($comment)) {
        $this->comments[] = $comment;
        $comment->setHouse($this);
    }

    return $this;
}

public function removeComment(Comment $comment): self
{
    if ($this->comments->contains($comment)) {
        $this->comments->removeElement($comment);
        // set the owning side to null (unless already changed)
        if ($comment->getHouse() === $this) {
            $comment->setHouse(null);
        }
    }

    return $this;
}

/* others Getters&Setters */
...