Я использую api-платформу, и у меня есть сущность Book, которая имеет отношение ManyToOne
к Writer.
Все писатели уже сохранены в базе данных, поэтому я хотел бы иметь возможность создавать книги с помощью запроса POST, содержащего писателя, с которым он связан.
Но он продолжает пытаться сохранятьсяновый писатель.
Как мне этого добиться?
Редактировать:
Книги
/**
*
* @ORM\Entity(repositoryClass="App\Repository\BooksRepository")
* @ApiResource(
* attributes={
* "normalization_context"={"groups"={"read"}}
* }
*
* )
*/
class Books
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Property", inversedBy="beans")
* @ORM\JoinColumn(nullable=false)
* @Groups({"read"})
*/
private $property;
public function getProperty(): ?Property
{
return $this->property;
}
public function setProperty(?Property $property): self
{
$this->property = $property;
return $this;
}
}
Писатели (также называемый имуществом)
/**
* @ORM\Entity(repositoryClass="App\Repository\PropertyRepository")
*/
class Property
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"read"})
*/
private $id;
/**
* @ORM\Column(type="string", length=30)
* @Groups({"read"})
*/
private $type;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Books", mappedBy="property", orphanRemoval=true)
* @Groups({"read"})
*/
private $books;
public function __construct()
{
$this->books = new ArrayCollection();
}
public function getId()
{
return $this->id;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
/**
* @return Collection|Books[]
*/
public function getBooks(): Collection
{
return $this->books;
}
public function addBook(Books $book): self
{
if (!$this->books->contains($book)) {
$this->books[] = $book;
$book->setProperty($this);
}
return $this;
}
public function removeBook(Books $book): self
{
if ($this->books->contains($book)) {
$this->books->removeElement($book);
// set the owning side to null (unless already changed)
if ($book->getProperty() === $this) {
$book->setProperty(null);
}
}
return $this;
}
}