Symfony discr列的ArrayCollection筛选器

Symfony discr列的ArrayCollection筛选器,symfony,twig,Symfony,Twig,我的实体中有一个数组集合 我有两个从主实体继承的其他实体 this is my code: /** * FooBase * * @ORM\Table(name="mytable") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({ * "foo"

我的实体中有一个数组集合 我有两个从主实体继承的其他实体

this is my code:

/**
 * FooBase
 *
 * @ORM\Table(name="mytable")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 * @ORM\DiscriminatorMap({
 *          "foo"                        = "\Entity\Foo",
 *          "bar"                        = "\Entity\Bar",
 * })
 * @ORM\Entity(repositoryClass="FooBaseRepository")
 */
在Twig中,我有这个代码

{{ profile.fooBaseCollection|length }}
我将返回整个ArrayCollection的长度

我只能检索desc=foo的项目? 差不多

$foo instanceof Foo

谢谢

如果我理解你的问题,你想在你的小树枝模板中将对象与Foo和Bar类型分开

在我看来,您不应该在视图中这样做,您可以在操作或服务中过滤数组集合,并将结果发送到视图

$foos = $profile->fooBaseCollection->filter(
    function($entry) {
        return $entry instanceof Foo;
    }
);

$bars = $profile->fooBaseCollection->filter(
    function($entry) {
        return $entry instanceof Bar;
    }
);

$twigVars = [
    'foos' => $foos,
    'bars' => $bars
];
如果您真的想在您的视图中实现这个过程,那么最好的方法就是在