Я установил сервер на основе API-платформы. Я автоматически сгенерировал некоторые Entities с помощью пакета symfony maker-bundle и модифицировал их в соответствии со своими потребностями. Если я вызываю API с помощью POST-запроса, я получаю ошибку Uncaught PHP Exception Symfony\Component\Serializer\Exception\NotNormalizableValueException: "Update is not allowed for this operation."
. Насколько я понимаю, таким образом нельзя обновлять связанные сущности. Но я не это имел в виду. Я просто хочу наладить отношения
Что я делаю неправильно?
Ниже приводится упрощенная версия моей проблемы. Я не учел автоматически сгенерированные геттеры / сеттеры.
Сущности:
/**
* @ApiResource(
* normalizationContext={"groups"={"book"}},
* denormalizationContext={"groups"={"book"}}
* )
*/
class Book
{
/**
* @var integer
*
* @Groups({"book"})
*
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer", options={"unsigned"=true})
*/
private $id;
/**
* @var string
*
* @Groups({"book"})
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $name;
/**
* @var Language
*
* @Groups({"book"})
*
* @ORM\ManyToOne(targetEntity="App\Entity\Language", inversedBy="books")
* @ORM\JoinColumn(nullable=false)
*/
private $language;
}
/**
* @ApiResource(normalizationContext={"groups"={"language", "book"}})
*/
class Language
{
/**
* @var integer
*
* @Groups({"language", "book"})
*
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer", options={"unsigned"=true})
*/
private $id;
/**
* @var string
*
* @Groups({"language", "book"})
*
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @var Book
*
* @ORM\OneToMany(targetEntity="App\Entity\Book", mappedBy="language")
*/
private $books;
}
Если я отправлю следующий POST-запрос в API, чтобы создать книгу с уже существующим языком
{
'name': 'some Name',
'language': {
'id': 234,
'name': "some languages name"
}
}
API отвечает с этой ошибкой
Uncaught PHP Exception Symfony\Component\Serializer\Exception\NotNormalizableValueException: "Update is not allowed for this operation."