symfony - Symfony Sonata Admin:如何从 DB 中获取选择数组
问题描述
如何parent_id
从数据库中获取所有值?
$category = $this->getSubject();
protected function configureFormFields(FormMapper $formMapper)
{
$fieldOptions = array(); //how get all value `parent_id` from DB
$formMapper->add('parent_id', ChoiceType::class, array(
'expanded' => true,
'multiple' => false,
'choices' => $fieldOptions,
'data' => $category->parent_id
));
}
解决方案
回答:
class CategoryAdmin extends AbstractAdmin
{
$category = $this->getSubject();
protected function configureFormFields(FormMapper $formMapper)
{
$em = $this->modelManager->getEntityManager(Category::class);
$fieldOptions = $em->getRepository(Category::class)->getChoiceParentId();
$formMapper->add('parent_id', ChoiceType::class, array(
'multiple' => false,
'choices' => array_flip($fieldOptions),
'data' => $category->parent_id
));
}
}
class CategoryRepository extends ServiceEntityRepository
{
public function getChoiceParentId()
{
$categories = $this->createQueryBuilder('c')
->select('c.id, c.name')
->getQuery()
->getResult();
$choice_parent_id = [0 => 'Empty'];
foreach ($categories as $category) {
$choice_parent_id[$category['id']] = $category['name'];
}
return $choice_parent_id;
}
}
推荐阅读
- seaborn - 如何为 seaborn.histplot() 使用 kde_kws 参数?
- sql - 通过内部窗口功能排序如何工作?
- c# - 父 WPF 之上的子 WPF (MvvmCross)
- azure-synapse - 无法从 Azure Synapse 连接 Azure 权限
- laravel - 在远程 ubuntu/nginx 服务器下安装 laravel 应用程序出现 404 错误
- apache-kafka - 用于大规模点击流数据的 Prometheus 用例
- unity3d - 可序列化对象的 Unity PropertyDrawer
- perl - Perl对字符串中不同字符的split函数的使用
- c++ - 有效地动态存储具有许多零的矩阵
- python - 我有一个名为 sampledata 的文件夹,里面有 4 个 excel 文件。我想读取每个 excel 文件的内容