我有一个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',
));