У меня проблема с API Platform. У меня есть сущность продукта и сущность количества. Я использую API Platform и API для моего приложения angular.
Продукт может иметь несколько количеств, а количество может содержать только один продукт.
В форме angular, если я создать количество, связанное с продуктом, с которым оно работает (оно создается в БД). Сразу после того, как я обновляю этот продукт, эти ранее удаленные количества удаляются (даже если я добавил IRI количества, ранее добавленного к количествам продукта перед обновлением).
Вот некоторый код:
Количество. php
<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
/**
* @ApiResource()
* @ApiFilter(OrderFilter::class, properties={"packing": "ASC"})
* @ORM\Entity(repositoryClass="App\Repository\QuantityRepository")
*/
class Quantity
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Product", inversedBy="quantities")
* @ORM\JoinColumn(nullable=false)
*/
private $product;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Ingredient")
* @ORM\JoinColumn(nullable=false)
*/
private $ingredient;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Packing")
* @ORM\JoinColumn(nullable=false)
*/
private $packing;
/**
* @ORM\Column(type="string", length=255)
*/
private $value;
Товар. php
<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Annotation\ApiSubresource;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Dompdf\Dompdf;
use Dompdf\Options;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass="App\Repository\ProductRepository")
* @ORM\HasLifecycleCallbacks()
* @ApiResource(
* collectionOperations={
* "get",
* "post"
* },
* itemOperations={
* "get",
* "put",
* "delete",
* "api_products_get_pdf_by_category" = {
* "method"="GET",
* "controller"="ProductController::class",
* },
* "api_products_get_pdf_by_list" = {
* "method"="GET",
* "controller"="ProductController::class",
* },
* "duplicate" = {
* "method"="GET",
* "controller"="ProductController::class",
* },
* "api_products_make_pdf" = {
* "method"="GET",
* "controller"="ProductController::class",
* }
* },
* normalizationContext={"groups"={"product"}}
* )
* @ApiFilter(OrderFilter::class, properties={"name", "id", "modifiedAt"})
* @ApiFilter(SearchFilter::class, properties={"id": "exact", "name": "partial", "productCategories.name": "exact", "enable": "exact", "bakeryProductsOverride.bakery.id":"exact"})
*/
class Product
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"product"})
*/
private $id;
/* ... OTHERS PROPERTIES CUTTED ... */
/**
* @ORM\OneToMany(targetEntity="App\Entity\Quantity", mappedBy="product", orphanRemoval=true)
* @Groups({"product"})
*/
private $quantities;
}