我有一个Trip实体,其中包含许多HoneymoonComponent。在TripAdmin中,我使用sonata_type_collection来内联编辑所有与HoneymoonComponent相关的内容:

$formMapper
        ->add('isHoneymoonEnabled', null)
        ->add('honeymoonComponents', 'sonata_type_collection', array('by_reference' => false), array(
                    'edit' => 'inline',
                    'inline' => 'table',

    ));


这可以正常工作,但是我想实现的是仅显示符合条件的honeymoonComponents(例如:HoneymoonComponent :: enabled = false)。

我找不到一种为此指定自定义查询的方法,但我有一个变通办法,我不知道它是否好,它可以覆盖HoneymoonComponent :: getHoneymoonComponent来仅返回符合条件的那些...但是我不太喜欢。

有没有一种方法可以指定sonata_type_collection应该使用哪个“ getter”方法? (或指定自定义查询)。两种解决方案对我来说都很好。

提前致谢 !

最佳答案

您可以尝试以下方法:

$formMapper
  ->add('isHoneymoonEnabled', null)
  ->add('honeymoonComponents', null, array(
            'by_reference' => false,
            'class' => 'My\Bundle\Entity\MyEntity',
            'query_builder' => $this->modelManager->createQuery('My\Bundle\Entity\MyEntity', 'h')
                    ->where('h.enabled = 0'),
        ), array(
            'edit' => 'inline',
            'inline' => 'table',
  ));

10-07 12:11