只有值=true的POST元素



我正在使用Api-platform作为项目的后端。它从一个名为"Voiture"的类发送数据。但是我不需要"Voiture"的所有元素,这个类有一个名为Parked的布尔元素。

而且我只想将元素发送到 Parked= true 的地方。是否可以这样做,我认为从接收方过滤数据是不切实际的。

这是我的"Voiture"课程:

<?php
namespace AppEntity;
use ApiPlatformCoreAnnotationApiResource;

/**
 * @ApiResource(
 *      attributes={"order"={"gareele": "DESC"}}
 * )
 * @ORMEntity(repositoryClass="AppRepositoryVoitureRepository")
 * @ApiFilter(
 *      SearchFilter::class,
 *      properties={
 *          "matricule": "partial"
 *      }
 * )
 */
class Voiture
{
    /**
     * @ORMId()
     * @ORMGeneratedValue()
     * @ORMColumn(type="integer")
     * @Groups({"toute"})
     */
    private $id;
    /**
     * @ORMColumn(type="string", length=200)
     * @Groups({"toute"})
     */
    private $matricule;

    /**
     * @ORMColumn(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;
    }

}

所以我终于找到了一个解决方案,结果是 Api 平台有一个过滤布尔数据的注释。我刚刚将下面的注释添加到我的类中,当我将 ?parked=true 添加到我的地址时它有效并且工作正常。

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

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

use AppEntityVoiture;
...
  $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-platform 来,特别是 GraphQL,所以,我不需要所有的行,因为,我有一个逻辑上的 delelte,没有物理删除。 我们不是制定业务规则,任何开发人员都对它做出自己的解释,而是进行个人注释。

请参阅此链接

,此链接也适用于SF4。

最新更新