Cześć.
Ćwiczę sobie dodawanie danych do REST API w formacie JSON i trafiłem na problem, gdyż podczas odbieranie danych kolekcja jest pusta. Wszelkie fora jakie przejrzałem mówiły o dodawaniu za pomocą formularza, co tu nie występuje.
Otrzymywane dane w formacie JSON podzieliłem na 2 tabele: Orders i Realestate. Orders jest główną tabelą i ma w sobie odniesienie do Realestate, które jest w relacji Jeden do Wielu (Jeden Order ma wiele Realestate).
Właśnie w Order jest ta nieszczęsna kolekcja, która po próbie uzyskania danych za pomocą GET jest pusta.
Z góry dzięki za pomoc.
Przykładowe dane:
{
"id": 100,
"assignee": "41f9de03-f0cb-451a-8e33-a87545b38528",
"author": "41f9de03-f0cb-451a-8e33-a87545b38528",
"realEstates": [
{
"type": "building",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
}
],
"inspectionDate": "2020-01-01"
}
Entity Orders:
<?php
namespace App\Entity;
use App\Repository\OrdersRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=OrdersRepository::class)
*/
class Orders
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $assignee;
/**
* @ORM\Column(type="string", length=255)
*/
private $author;
/**
* @ORM\Column(type="string", length=255)
*/
private $inspectionDate;
/**
* @ORM\OneToMany(targetEntity=Realestate::class, mappedBy="orders")
*/
private $realestate_id;
public function __construct()
{
$this->realestate_id = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getAssignee(): ?string
{
return $this->assignee;
}
public function setAssignee(string $assignee): self
{
$this->assignee = $assignee;
return $this;
}
public function getAuthor(): ?string
{
return $this->author;
}
public function setAuthor(string $author): self
{
$this->author = $author;
return $this;
}
public function getInspectionDate(): ?string
{
return $this->inspectionDate;
}
public function setInspectionDate(string $inspectionDate): self
{
$this->inspectionDate = $inspectionDate;
return $this;
}
/**
* @return Collection|Realestate[]
*/
public function getRealestateId(): Collection
{
return $this->realestate_id;
}
public function addRealestateId(Realestate $realestateId): self
{
if (!$this->realestate_id->contains($realestateId)) {
$this->realestate_id[] = $realestateId;
$realestateId->setOrders($this);
}
return $this;
}
public function removeRealestateId(Realestate $realestateId): self
{
if ($this->realestate_id->removeElement($realestateId)) {
// set the owning side to null (unless already changed)
if ($realestateId->getOrders() === $this) {
$realestateId->setOrders(null);
}
}
return $this;
}
}
Entity Realestate:
<?php
namespace App\Entity;
use App\Repository\RealestateRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=RealestateRepository::class)
*/
class Realestate
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $type;
/**
* @ORM\Column(type="text")
*/
private $description;
/**
* @ORM\ManyToOne(targetEntity=Orders::class, inversedBy="realestate_id")
*/
private $orders;
public function getId(): ?int
{
return $this->id;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(string $description): self
{
$this->description = $description;
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
public function getOrders(): ?Orders
{
return $this->orders;
}
public function setOrders(?Orders $orders): self
{
$this->orders = $orders;
return $this;
}
}