Только элементы POST со значением = true

Я использую 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;
    }


}

Подождите, содержание вашего вопроса говорит о получении сущностей из серверной части, но ваш заголовок говорит «POST», откуда вы отправляете данные?

Arleigh Hix 06.06.2019 08:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
1
52
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

В моем случае я не использую контроллер, я использую платформу API, которая использует аннотации.

Hyperion 13.06.2019 14:43

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

См. этот связь, эта ссылка также применима к SF4.

Ответ принят как подходящий

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

 * @ApiFilter(BooleanFilter::class,
 *  properties = {
 * "parked"
 * }
 * )

Другие вопросы по теме