Обновление товара удаляет неправильно только что созданные количества - PullRequest
1 голос
/ 13 марта 2020

У меня проблема с 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;
}

1 Ответ

0 голосов
/ 23 марта 2020

Моя вина. Ничего не связано с платформой API. Была ошибка с заказами звонков в Angular. Извините за шум.

...