Symfony - вывести несколько сущностей - PullRequest
0 голосов
/ 01 октября 2018

Я хочу сохранить мои значения сущности по умолчанию через одну определенную переменную.Я подключил некоторые таблицы через внешние ключи, и они уже возвращают значения, которые находятся в БД.Поскольку это поля, которые нельзя изменить, мне просто нужно передать их в новой строке в БД.

 public function ticketAddAction(Request $request, $id)

$ticket = $this->getDoctrine()
        ->getRepository('AppBundle:Tickets')->find($id);

    $form = $this->createFormBuilder()
        ->add('play', EntityType::class, array(
            'disabled'=> true,
            'data' => $ticket->getPlay(),
            'class' => Plays::class,
            'choice_label' => 'playName',
            'attr' => ['class' => 'form-control']
        ))
        ->add('theater', EntityType::class, array(
            'disabled'=> true,
            'data' => $ticket->getTheater(),
            'class' => Theater::class,
            'choice_label' => 'name',
            'attr' => ['class' => 'form-control']
        ))
        ->add('hall', EntityType::class, array(
            'disabled'=> true,
            'data' => $ticket->getHall(),
            'class' => Halls::class,
            'choice_label' => 'hallName',
            'attr' => ['class' => 'form-control']
        ))
->getForm();

    $form->handleRequest($request);

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

        $data = $form->getData();

        $this->container->get('tickets')->addNewTicket($ticket);

        return $this->redirectToRoute('published');
    }

    return $this->render('@FrontTemplates/pages/ticket.html.twig', array(
        'form' => $form->createView(),
        'purchase' => $ticket,
    ));
}

В этом вызове API все, кажется, работает нормально, но в приведенном ниже вызове API я не могу понять, как выполнить цикл через все эти объекты, используя только одну переменную ..

Вотмой сервис api call ..

 public function addNewTicket(Tickets $ticket)
{
    $newTicket = new Tickets();

    foreach ($ticket as $newTicket) {
             $ticket->setPlay($play);


               $ticket->setTheater($theater);
                 $ticket->setHall($hall);
    }
            return $newTicket 
}

и информация о моей сущности

    /**
 * @ORM\ManyToOne(targetEntity="AppBundle\Base\Entity\Plays")
 * @ORM\JoinColumn(name="play_id", referencedColumnName="id")
 */
private $play;

/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Base\Entity\Theater")
 * @ORM\JoinColumn(name="theater_id", referencedColumnName="id")
 */
private $theater;

/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Base\Entity\Halls")
 * @ORM\JoinColumn(name="hall_id", referencedColumnName="id")
 */
private $hall;

1 Ответ

0 голосов
/ 01 октября 2018

Прежде всего, имена ваших сущностей должны быть единичными, чтобы избежать путаницы, как это.

В вашем первом фрагменте кода эта форма кажется бесполезной.Вы ничего не делаете с переменной «$ data».Если вы хотите связать эту форму с вашим объектом заявки, вы должны вызвать конструктор форм следующим образом: $ this-> createFormBuilder ($ ticket)

Во втором фрагменте кода вы пытаетесь перебрать один объект,Кроме того, код "addNewTicket" не требуется, если вы правильно связываете свою форму со своей сущностью.

Кроме того, ознакомьтесь с официальными документами: https://symfony.com/doc/current/forms.html#building-the-form

Вот полный код для редактированиябилет:

public function ticketAddAction(Request $request, $id)

$em = $this->getDoctrine()->getManager();
$ticket = $em->getRepository('AppBundle:Tickets')->find($id);

$form = $this->createFormBuilder($ticket)
    ->add('play', EntityType::class, array(
        'data' => $ticket->getPlay(),
        'class' => Plays::class,
        'choice_label' => 'playName',
        'attr' => ['class' => 'form-control']
    ))
    ->add('theater', EntityType::class, array(
        'data' => $ticket->getTheater(),
        'class' => Theater::class,
        'choice_label' => 'name',
        'attr' => ['class' => 'form-control']
    ))
    ->add('hall', EntityType::class, array(
        'data' => $ticket->getHall(),
        'class' => Halls::class,
        'choice_label' => 'hallName',
        'attr' => ['class' => 'form-control']
    ))
->getForm();

$form->handleRequest($request);

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

    $em->persist($ticket);
    $em->flush();

    return $this->redirectToRoute('published');
}

return $this->render('@FrontTemplates/pages/ticket.html.twig', array(
    'form' => $form->createView(),
    'purchase' => $ticket,
));
}`

Если ваши отношения не сохранены с этим кодом, пожалуйста, добавьте свою картографическую информацию.Может быть, там что-то не так.

...