Только элементы POST со значением = true - PullRequest
0 голосов
/ 06 июня 2019

Я использую Api-платформу в качестве бэкенда для проекта. Он отправляет данные из класса под названием «Voiture». Но мне не нужны все элементы «Voiture», в этом классе есть логический элемент под названием «Parked».

И я только хочу отправить элементы, где Parked = true. Возможно ли это сделать, я не думаю, что было бы целесообразно фильтровать данные с принимающей стороны.

это мой класс "Voiture":

<?php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;


/**
 * @ApiResource(
 *      attributes={"order"={"gareele": "DESC"}}
 * )
 * @ORM\Entity(repositoryClass="App\Repository\VoitureRepository")
 * @ApiFilter(
 *      SearchFilter::class,
 *      properties={
 *          "matricule": "partial"
 *      }
 * )
 */
class Voiture
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     * @Groups({"toute"})
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=200)
     * @Groups({"toute"})
     */
    private $matricule;


    /**
     * @ORM\Column(type="boolean")
     * @Groups({"toute"})
     */
    private $parked;



    public function getId(): ?int
    {
        return $this->id;
    }

    public function getMatricule(): ?string
    {
        return $this->matricule;
    }

    public function setMatricule(string $matricule): self
    {
        $this->matricule = $matricule;

        return $this;
    }

    public function getParked(): ?bool
    {
        return $this->parked;
    }

    public function setParked(bool $parked): self
    {
        $this->parked = $parked;

        return $this;
    }


}

Ответы [ 3 ]

0 голосов
/ 06 июня 2019

Может быть, вы ищете персонализированные аннотации, я использую api-платформу, в частности GraphQL, поэтому мне не нужны все строки, потому что у меня есть логическое удаление, а не физическое удаление. вместо того, чтобы создавать правило для бизнеса, а любой разработчик делает его собственное толкование, мы делаем личную аннотацию.

См. Эту ссылку , эта ссылка также применяется к SF4.

0 голосов
/ 14 июня 2019

Итак, я наконец-то нашел решение, оказалось, что есть аннотация для платформы Api, которая фильтрует логические данные.Я только добавил примечание ниже к своему классу, и это работало, когда я добавляю? Parked = true к своему адресу, и это прекрасно работает.

 * @ApiFilter(BooleanFilter::class,
 *  properties={
 * "parked"
 * }
 * )
0 голосов
/ 06 июня 2019

Да, в хранилище есть методы поиска сущностей по любым критериям. Вам понадобится что-то вроде следующего в вашем контроллере:

use App\Entity\Voiture;
...

  $repository = $this->getDoctrine()->getRepository(Voiture::class);

  $parkedVoitures = $repository->findBy(
    ['parked' => true]
  );
  $parkedVoituresOrderedByMatricule = $repository->findBy(
    ['parked' => true],
    ['matricule' => 'ASC']
  );

https://symfony.com/doc/current/doctrine.html#fetching-objects-from-the-database

...