仅具有value = true的POST元素

时间:2019-06-05 22:19:25

标签: symfony api-platform.com

我正在使用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 :(得分:0)

是的,存储库具有根据任何条件查找实体的方法。您将在控制器中需要以下内容:

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

答案 1 :(得分:0)

也许您正在寻找个性化的批注,即使用api平台(具体来说是GraphQL),所以,我不需要所有行,因为我有逻辑上的理解,没有物理上的删除。而不是制定业务规则,而是由任何开发人员自行解释,我们都会进行个人注释。

请参见此link,此链接也适用于SF4。

答案 2 :(得分:0)

所以我终于找到了一个解决方案,结果是Api Platform的注释可以过滤布尔数据。 我只是将下面的注释添加到我的班级中,当我在地址中添加?parked = true时它可以正常工作。

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