Как создать несколько ChoiceType - строк в Symfony - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть несколько EntityType, который получает его значения из базы данных следующим образом:

MyFormType.php

 private $membersRepository;

 public function __construct(MembersRepository $membersRepository)
 {
    $this->membersRepository = $membersRepository;
 }

 public function buildForm(FormBuilderInterface $builder, array $options)
 {
    $builder
        ->add('trainer', EntityType::class, [
            'multiple' => true,
            'expanded' => true,
            'class' => Members::class,
            'choices' => $this->membersRepository->findAllByExecutive(),
            'placeholder' => 'Ausbilder',
            'label' => 'Ausbilder',
            'attr'=> array('class'=>'form-control'),
            ])

Мой репозиторий с findAllByExecutive ()

 /**
 * @return Members[]
 */
public function findAllByExecutive()
{
    return $this->createQueryBuilder('u')
    ->select('partial u.{id, firstname, lastname}')
        ->orderBy('u.lastname', 'ASC')
        ->add('where', 'u.executive = 1')
        ->getQuery()
        ->execute();
}

и, наконец, мой контроллер для помещения этих значений в базу данных

 if ($form->isSubmitted() && $form->isValid()) {

        /** @var Dienstbuch $dienstbuch */
        $dienstbuch = $form->getData();
        //dd($dienstbuch->trainer);
        $em->persist($dienstbuch);
        $em->flush();
        $this->addFlash('success', 'Eintrag gespeichert');

        return $this->redirectToRoute('dienstbuch.neu');
    }
  1. Почему мой метод findAllByExecutive () дает мне больше, чем мои 3 ожидаемые строки?!
  2. Как я могу построить 3 флажкак каждой строке пользователя?я получаю только один флажок для пользователя.Я прочитал много часов, документов, сообщений, но я не могу найти решение.Я надеюсь, что вы можете помочь мне со ссылкой или идеей.

1 Ответ

0 голосов
/ 07 февраля 2019

Попробуй так

/**
 * @return Members[]
 */
public function findAllByExecutive()
{
   return $this->createQueryBuilder('u')
        ->select('partial u.{id, firstname, lastname}')
        ->orderBy('u.lastname', 'ASC')
        ->add('where', 'u.executive = 1')
        ->getQuery()
        ->setHint(Doctrine\ORM\Query::HINT_FORCE_PARTIAL_LOAD, 1)
        ->execute();
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...