With Symfony 5, Api Platform and Doctrine, I want to update a entity and his array collection linked.
When I send PUT
request to Api Platform the main entity (UserMeasurement
#17) is updated but not the child entity (UserMeasurementMeasurement
#28) : a new entry is incremented and created.
PUT request : /api/user_measurements/17
{
"date": "2020-10-20T12:11:22.609Z",
"measurements": [
{
"id": "/api/user_measurement_measurements/28", // same result with "28" value
"value": "7"
}
]
}
(when creating POST
the datas everything works fine (main entity and child entity are created))
Part of main entity :
* @ApiResource(
* collectionOperations={"get", "post"},
* itemOperations={"get", "put", "delete"},
* normalizationContext={
* "groups"={"user_measurements_read"}
* },
* denormalizationContext={
* "groups"={"user_measurements_write"}
* },
* )
class UserMeasurement
{
...
/**
* @var UserMeasurementMeasurement[]|ArrayCollection
*
* @ORM\OneToMany(
* targetEntity="App\Entity\UserMeasurementMeasurement",
* mappedBy="userMeasurement",
* cascade={"persist"},
* )
* @Groups({
* "user_measurements_read",
* "user_measurements_write",
* })
*/
private $measurements;
...
Part of child entity :
* @ApiResource(
* collectionOperations={"get", "post"},
* itemOperations={"get", "put", "delete"},
* normalizationContext={
* "skip_null_values"=false,
* "groups"={"user_measurement_measurements_read"}
* },
* )
class UserMeasurementMeasurement
{
...
/**
* @var float
*
* @ORM\Column(type="decimal", nullable=true, precision=6, scale=2)
* @Assert\Positive()
* @Groups({
* "user_measurements_read",
* "user_measurements_write",
* })
*/
private $value;
...
When using
application/ld+json
, you must provide the@id
property: