Как создать несколько ChoiceType — строк в Symfony

У меня есть несколько 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() дает мне больше трех ожидаемых строк?!
  2. Как я могу установить 3 флажка для каждой строки пользователя? я получаю только один флажок для пользователя. Я прочитал много часов, документов, сообщений, но не могу найти решение. Надеюсь, вы поможете мне ссылкой или идеей.
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
162
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте так

/**
 * @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();
    }

Хотя это может быть хорошим ответом, здесь не хватает объяснения.

Joao Vitorino 07.02.2019 18:38

Другие вопросы по теме