Symfony Sonata Admin: как получить массив вариантов из БД - PullRequest
0 голосов

Как получить все значения 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 голосов

Ответ:

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

}
0 голосов
/ 01 декабря 2018

Если «родитель» является сущностью (возможно, Category), вы можете посмотреть на EntityType .В противном случае вашему коду нужно гораздо больше контекста.В каком классе или файле находится этот фрагмент?

...