过滤OneToMany Collection

时间:2017-12-12 16:41:39

标签: symfony doctrine-orm api-platform.com

我目前正试图过滤我的OneToMany收藏结果,没有太多运气。

我已尝试设置docs here中所述的过滤器无效。 使用以下代码,我只能选择过滤Foos集合 / api / foos < - 即使将分页设置为1,此请求也不会实际应用过滤器每页。

image

image

我希望/需要它在 /api/foos/1?bar.isRetired=false 上,并返回1' Bar'的结果。与许多' foos',但在哪里&foo.isRetired = false'

实施例

// config/packages/api_filters.yaml
services:
    filters.retired_filter:
            parent: 'api_platform.doctrine.orm.boolean_filter'
            arguments: [ { bars.isRetired: ~ } ]
            tags: [ 'api_platform.filter' ]


// src/Entity/Foo.php

/* @ApiResource(attributes={"filters"={"filters.retired_filter"}}) */
class Foo
{
    private $id;
    private $name;
    /** @ORM\OneToMany(targetEntity="Bars", mappedBy="foo") */
    private $bars;
    public function __construct(){
        $this->bars = new ArrayCollection();
    }
}

// src/Entity/Bar.php

/* @ApiResource() */
class Bar
{
    private $id;
    private $name;
    /* @ORM\Column(name="is_retired", type="boolean") */
    private $isRetired;
    /* @ORM\ManyToOne(targetEntity="Foo", inversedBy="bars") */
    private $foo;
}

任何指针都会受到高度赞赏。

我正在使用Symfony4与Flex和API-Platform 2.1

0 个答案:

没有答案