Symfony Sonata Admin:如何从数据库获取选择数组

时间:2018-12-01 09:30:25

标签: symfony admin sonata

如何从数据库中获取所有值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
        ));

}

2 个答案:

答案 0 :(得分:0)

如果“父”是一个实体(也许是Category),则您可能需要查看EntityType。否则,您的代码需要更多的上下文。该代码段位于哪个类或文件中?

答案 1 :(得分:0)

答案:

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;
}

}