也许有人遇到这样的问题然后请帮忙。我想在formbuilder中添加一个下拉字段,该字段将从本机sql查询中提供。我以我的形式做到了这一点:
->add('extensionId', 'entity', [
'required' => false,
'label' => 'Insurance Company',
'class' => 'Bundle:Product',
'query_builder' => function (ProductRepository $repo) {
return $repo->getPGOperPG();
}
])
如果我使用createQueryBuilder,它可以正常工作,如下所示:
public function getPGOperPG()
{
return $this->createQueryBuilder('pgo')
->select('pgo')
->join('pgo.productGroups', 'pg')
->where('pg.id IN (677, 655, 625) AND pgo.isActive = true');
}
但是如果使用它我会得到错误:
public function getPGOperPG()
{
$sql = <<<SQL
SELECT product_group_option_id
FROM product_groups_product_group_options
WHERE product_group_id in (677, 655, 625)
SQL;
$rsm = new ResultSetMappingBuilder($this->getEntityManager());
$rsm->addRootEntityFromClassMetadata('Bundle\Entity\Product', 'pgo');
return $this->_em->createNativeQuery($sql, $rsm)
;
}
这是错误: enter image description here。 我知道只有CreateQueryBuilder对象是预期的。
问题:有没有办法将原生查询传递给下拉字段?也许还有其他形式或smth?
提前谢谢!!!